@acorex/connectivity 19.1.3 → 19.1.5

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.
@@ -68,6 +68,43 @@ class AXCApiEntityStorageService {
68
68
  const sortParam = request?.sort.map((sort) => `${sort.field}:${sort.dir}`).join(',');
69
69
  httpParams = httpParams.set('$orderby', sortParam);
70
70
  }
71
+ const greaterThanOperator = this.filterService.getOperator('greaterThan');
72
+ const lessThanOperator = this.filterService.getOperator('lessThan');
73
+ function generateQueryString(filter) {
74
+ if (!filter.filters) {
75
+ // Base case: single filter
76
+ if (typeof filter.value === 'object' && filter.operator.type === 'between') {
77
+ return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;
78
+ }
79
+ else {
80
+ return `${filter.field} ${filter.operator.type} '${filter.value}'`;
81
+ }
82
+ }
83
+ else if (!filter.filters.length) {
84
+ return;
85
+ }
86
+ else {
87
+ // Recursive case: multiple filters
88
+ const filterStrings = filter.filters.map((subFilter) => generateQueryString(subFilter));
89
+ const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided
90
+ return `${filterStrings.filter((i) => i).join(` ${logic} `)}`;
91
+ }
92
+ }
93
+ let queryString = '';
94
+ if (request.filter) {
95
+ const filter = request.filter;
96
+ if (filter.filters && filter.filters.length > 0) {
97
+ // Construct filter string from provided filters
98
+ const dynamicQueries = generateQueryString(filter);
99
+ console.log({ dynamicQueries: dynamicQueries });
100
+ // Append dynamic filters to custom filter, if both exist
101
+ queryString = (queryString ? `${queryString},${dynamicQueries}` : dynamicQueries);
102
+ }
103
+ }
104
+ // Set the $filter parameter if there are any filters
105
+ if (queryString) {
106
+ httpParams = httpParams.set('$query', queryString);
107
+ }
71
108
  return firstValueFrom(this.http.get(`${this.mainUrl}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })).then((response) => {
72
109
  return {
73
110
  total: response.totalCount,
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-connectivity-api.mjs","sources":["../../../../libs/connectivity/api/src/lib/api-storage.service.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/application.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/configuration.service.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/feature.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/permission.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/connectivity/api/src/lib/api.module.ts","../../../../libs/connectivity/api/src/acorex-connectivity-api.ts"],"sourcesContent":["import {\n AXP_ROOT_CONFIG_TOKEN,\n AXPEntityStorageService,\n AXPFilterOperatorMiddlewareService,\n AXPPagedListResult,\n AXPQueryRequest,\n} from '@acorex/platform/common';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { kebabCase } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXCApiEntityStorageService implements AXPEntityStorageService<string, any> {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private filterService = inject(AXPFilterOperatorMiddlewareService);\n private entityResolver = inject(AXPEntityResolver);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n get dbName(): string {\n return 'ACoreXPlatform';\n }\n\n getConfigEntity(entityName: string) {\n const [module, entity] = entityName.split('.');\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n };\n }\n\n async initial<T = any>(entityName: string, collection: T[]): Promise<void> {\n //const exists = await this.table('entity-store').where({ entityName }).count();\n // if (exists === 0) {\n // await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n // }\n }\n\n async getOne<T = any>(entityName: string, id: string): Promise<T> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.get<T>(url));\n }\n\n async updateOne<T = any>(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<T> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.put<T>(url, keyValue));\n }\n\n async deleteOne(entityName: string, id: string): Promise<void> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}/${id}`;\n firstValueFrom(this.http.delete(url));\n }\n\n async insertOne<T = any>(entityName: string, entityItem: T): Promise<string> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}`;\n return firstValueFrom(this.http.post<string>(url, entityItem));\n }\n\n async getAll<T = any>(entityName: string): Promise<T[]> {\n return [];\n }\n\n async query<T = any>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>> {\n const routeElement = await this.getConfigEntity(entityName);\n\n let httpParams = new HttpParams().set('Skip', request.skip).set('Take', request.take);\n if (request?.sort && request?.sort.length > 0) {\n const sortParam = request?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n return firstValueFrom(\n this.http.get<any>(`${this.mainUrl}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n}\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n constructor(private http: HttpClient) { }\n\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Promise<void> {\n return Promise.resolve();\n }\n\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n\n private mapToAXPApplication(item: any): AXPApplication {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\n\nexport interface Localization {\n values: Record<string, Record<string, string>>;\n resources: Record<string, Resource>;\n languages: Language[];\n currentCulture: Culture;\n defaultResourceName: string;\n languagesMap: Record<string, NameValue[]>;\n languageFilesMap: Record<string, NameValue[]>;\n}\n\nexport interface Resource {\n texts: Record<string, string>;\n baseResources: string[];\n}\n\nexport interface Language {\n cultureName: string;\n uiCultureName: string;\n displayName: string;\n twoLetterISOLanguageName: string;\n flagIcon: string;\n}\n\nexport interface Culture {\n displayName: string;\n // ... other properties\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\nexport interface Auth {\n grantedPolicies: Record<string, boolean>;\n}\n\n// Main configuration interface\nexport interface ApplicationConfiguration {\n localization: Localization;\n auth: Auth;\n setting: Record<string, any>;\n currentUser: any;\n features: Record<string, any>;\n globalFeatures: Record<string, any>;\n multiTenancy: Record<string, any>;\n currentCulture: Culture;\n timing: Record<string, any>;\n clock: Record<string, any>;\n objectExtensions: Record<string, any>;\n extraProperties: Record<string, any>;\n\n // ... other properties\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMConfigurationService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private applicationConfig: ApplicationConfiguration | null = null;\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n private fetchInProgress: boolean = false;\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n\n constructor(private http: HttpClient) {\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n\n public init(): Observable<ApplicationConfiguration> {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\n tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n })\n );\n } else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(\n filter((config): config is ApplicationConfiguration => config !== null),\n take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n\n getConfig(): Observable<ApplicationConfiguration> {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n } else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(\n filter((config) => config !== null),\n take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig!))\n );\n }\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n\n private list: AXPFeature[] = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ]\n\n getList(): Observable<AXPFeature[]> {\n return of(this.list).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private aXMAuthConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private oauthService: OAuthService = inject(OAuthService);\n private http: HttpClient = inject(HttpClient);\n public userInfo: any;\n public authConfig: AuthConfig;\n public openidConfigurationInfo: any; // clarify the type if possible\n\n public async configureOAuth(): Promise<void> {\n if (this.openidConfigurationInfo) return;\n\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n\n if (oidcJson) {\n const authData = JSON.parse(oidcJson) as AXPSessionData;\n if (authData) {\n this.setServiceProps(authData);\n\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n // this.refresh();\n } else {\n this.logout();\n }\n }\n }\n }\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\n await this.configureOAuth();\n try {\n const body = new HttpParams()\n .set('grant_type', 'password')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('username', credentials.username)\n .set('password', credentials.password)\n .set('scope', this.authConfig.scope!);\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n\n // const authData = new AuthenticationData(response);\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return {\n succeed: true,\n data: {\n accessToken: response.access_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n idToken: response.id_token,\n refreshToken: response.refresh_token!,\n user: {\n id: response.sub,\n title: response.fullname,\n name: response.sub,\n avatar: response.picture,\n } as AXPUser,\n tenant: {\n id: response.tenantid!,\n name: response.tenantname!,\n title: response.tenanttitle!,\n },\n application: {\n id: response.applicationid!,\n name: response.applicationname!,\n title: response.applicationtitle,\n },\n },\n };\n } catch (error: any) {\n this.handleError(error);\n }\n }\n\n async signout(): Promise<void> {\n //this.logout();\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n try {\n await this.configureOAuth();\n const refreshResult = await this.refresh(context.tenant?.id, context.application?.id);\n if (refreshResult) {\n return {\n succeed: true,\n data: {\n accessToken: this.oauthService.getAccessToken(),\n refreshToken: this.oauthService.getRefreshToken(),\n },\n };\n } else {\n return { succeed: false };\n }\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n async refresh(tenantId?: string, applicationId?: string): Promise<boolean> {\n await this.configureOAuth();\n const authData = this.loadAuthData();\n if (!authData) return false;\n\n const refreshToken = this.oauthService.getRefreshToken();\n if (!refreshToken) return false;\n\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('refresh_token', refreshToken)\n .set('tenantId', tenantId ?? '')\n .set('applicationId', applicationId ?? '');\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n try {\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return true;\n } catch (error) {\n console.error('Token refresh error', error);\n return false;\n }\n }\n\n expires_in_milisecound(expires_in_date: string): number {\n const now = new Date();\n const expire = new Date(expires_in_date);\n return expire.getTime() - now.getTime();\n }\n\n private setServiceProps(authData: AXPSessionData): void {\n this.oauthService.getAccessToken = () => authData.accessToken;\n this.oauthService.getIdToken = () => authData.idToken ?? '';\n this.oauthService.getRefreshToken = () => authData.refreshToken;\n if (authData.expiresIn) {\n const refreshTime = this.expires_in_milisecound(authData.expiresIn!);\n this.oauthService.getAccessTokenExpiration = () => refreshTime;\n // if (refreshTime < 0) {\n // this.refresh();\n // }else{\n // }\n }\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n const authDataJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (!authDataJson) return undefined;\n\n const authData = JSON.parse(authDataJson) as AXPSessionData;\n\n // return authData ? new AuthenticationData(authData) : undefined;\n return authData;\n }\n\n public async loadUserInfo(): Promise<object> {\n return this.oauthService.loadUserProfile();\n }\n public calculateExpireInDate(expireInMilisecound: number) {\n return new Date(Date.now() + expireInMilisecound * 1000).toISOString();\n }\n private logout(): void {\n this.oauthService.logOut({\n noRedirectToLogoutUrl: true\n });\n }\n\n private handleError(error: any): never {\n if (error?.reason) {\n throw new Error(JSON.stringify(error.reason));\n } else if (error?.message) {\n throw new Error(error.message);\n } else {\n throw new Error('Network or server error occurred');\n }\n }\n\n //#region getter\n get name(): string {\n return 'user-pass';\n }\n //#endregion\n}\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n// export class AuthenticationData {\n// access_token: string;\n// applicationid?: string;\n// applicationname?: string;\n// applicationtitle?: string;\n// editionid?: string;\n// editionname?: string;\n// editiontitle?: string;\n// id_token?: string;\n// refresh_token?: string;\n// scope?: string;\n// tenantid?: string;\n// tenantname?: string;\n// tenanttitle?: string;\n// token_type?: string;\n// expires_in_date?: string;\n// sub?: string;\n// picture?: string;\n// fullname?: string;\n\n// constructor(data: AuthenticationDataModel) {\n// this.access_token = data.access_token;\n// this.applicationid = data.applicationid;\n// this.applicationname = data.applicationname;\n// this.applicationtitle = data.applicationtitle;\n// this.editionid = data.editionid;\n// this.editionname = data.editionname;\n// this.editiontitle = data.editiontitle;\n// this.id_token = data.id_token;\n// this.refresh_token = data.refresh_token;\n// this.scope = data.scope;\n// this.tenantid = data.tenantid;\n// this.tenantname = data.tenantname;\n// this.tenanttitle = data.tenanttitle;\n// this.token_type = data.token_type;\n// this.sub = data.sub;\n// this.picture = data.picture;\n// this.fullname = data.fullname;\n\n// if (data.expires_in) {\n// this.expires_in_date = new Date(Date.now() + data.expires_in * 1000).toISOString();\n// } else {\n// this.expires_in_date = data.expires_in_date || '';\n// }\n// }\n\n// get expires_in_milisecound(): number {\n// const now = new Date();\n// const expire = new Date(this.expires_in_date!);\n// return expire.getTime() - now.getTime();\n// }\n\n// public setTokenRefreshModel(data: AuthenticationDataModel): void {\n// this.access_token = data.access_token;\n// this.id_token = data.id_token;\n// this.token_type = data.token_type;\n// this.scope = data.scope;\n// this.refresh_token = data.refresh_token;\n// this.expires_in_date = new Date(Date.now() + data.expires_in! * 1000).toISOString();\n// }\n// }\n\nexport interface IAuthenticationDataModel {\n access_token: string;\n applicationid: string;\n applicationname: string;\n applicationtitle: string;\n editionid: string;\n editionname: string;\n editiontitle: string;\n id_token: string;\n refresh_token: string;\n scope: string;\n tenantid: string;\n tenantname: string;\n tenanttitle: string;\n token_type: string;\n expires_in?: number;\n sub?: string;\n fullname?: string;\n picture?: string;\n}\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n\n constructor(private http: HttpClient) {}\n\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n\n mapTo(jsonObj: any): string[] {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n}\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPTenant[]> {\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n async set(tenant: AXPTenant): Promise<void> {\n return Promise.resolve();\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import {\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n AXPAuthModule,\n} from '@acorex/platform/auth';\nimport { AXPEntityStorageService } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AXCApiEntityStorageService } from './api-storage.service';\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\n\n@NgModule({\n imports: [\n OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy],\n }),\n ],\n providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n ],\n})\nexport class AXCApiModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;MAca,0BAA0B,CAAA;AAMrC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AALhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kCAAkC,CAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC1C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;;AAItC,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,gBAAgB;;AAGzB,IAAA,eAAe,CAAC,UAAkB,EAAA;AAChC,QAAA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC;QACrC,OAAO;AACL,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,MAAM,EAAE,WAAW;SACpB;;AAGH,IAAA,MAAM,OAAO,CAAU,UAAkB,EAAE,UAAe,EAAA;;;;;;AAO1D,IAAA,MAAM,MAAM,CAAU,UAAkB,EAAE,EAAU,EAAA;QAClD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAC3D,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAA,EAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA,CAAE;QAChG,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;;AAG9C,IAAA,MAAM,SAAS,CAAU,UAAkB,EAAE,EAAU,EAAE,QAAgC,EAAA;QACvF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAC3D,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAA,EAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA,CAAE;AAChG,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,QAAQ,CAAC,CAAC;;AAGxD,IAAA,MAAM,SAAS,CAAC,UAAkB,EAAE,EAAU,EAAA;QAC5C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC3D,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAI,CAAA,EAAA,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAI,CAAA,EAAA,EAAE,EAAE;QACjF,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;AAGvC,IAAA,MAAM,SAAS,CAAU,UAAkB,EAAE,UAAa,EAAA;QACxD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;AAC3D,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAI,CAAA,EAAA,YAAY,CAAC,MAAM,EAAE;AAC3E,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,GAAG,EAAE,UAAU,CAAC,CAAC;;IAGhE,MAAM,MAAM,CAAU,UAAkB,EAAA;AACtC,QAAA,OAAO,EAAE;;AAGX,IAAA,MAAM,KAAK,CAAU,UAAkB,EAAE,OAAwB,EAAA;QAC/D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAE3D,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC;AACrF,QAAA,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACzF,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;;AAEpD,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,CAAA,EAAG,IAAI,CAAC,OAAO,CAAI,CAAA,EAAA,YAAY,CAAC,MAAM,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAE,CAAA,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAC5G,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;YAClB,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,UAAU;gBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB;AACH,SAAC,CAAC;;8GAxEO,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;MCNY,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAU,CAAA,UAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iCAAiC;QACrE,IAAS,CAAA,SAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iBAAiB;;IAI5D,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACpE,CAAC,CACH;;AAGH,IAAA,GAAG,CAAC,WAA2B,EAAA;AAC7B,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;AAkBlB,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACnC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;;SAE9B;;8GA5CQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MC2DY,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AANhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAiB,CAAA,iBAAA,GAAoC,IAAI;QACzD,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC;QACtE,IAAe,CAAA,eAAA,GAAY,KAAK;AAChC,QAAA,IAAA,CAAA,aAAa,GAAqD,IAAI,eAAe,CAAkC,IAAI,CAAC;QAGlI,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;;IAGnB,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/C,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;aAC7B,CAAC,CACH;;aACI;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAyC,MAAM,KAAK,IAAI,CAAC,EACvE,IAAI,CAAC,CAAC,CAAC;aACR;;;IAIL,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;;AAE1B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;;aAC5B;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EACnC,IAAI,CAAC,CAAC,CAAC;AACP,YAAA,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC,CAC7C;;;8GAxCM,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC7DY,oBAAoB,CAAA;AAAjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,IAAI,GAAiB;AAC3B,YAAA;AACE,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE;AACR;SACF;;IAED,OAAO,GAAA;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEtC;;MCJY,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAmB,MAAM,CAAC,qBAAqB,CAAC;AAC9D,QAAA,IAAA,CAAA,YAAY,GAAiB,MAAM,CAAC,YAAY,CAAC;AACjD,QAAA,IAAA,CAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC;AAgO9C;AA3NQ,IAAA,MAAM,cAAc,GAAA;QACzB,IAAI,IAAI,CAAC,uBAAuB;YAAE;AAElC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACnC,gBAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;YAE1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGlD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;QAE1C,IAAI,CAAC,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;AAE9E,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;;QAGvD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,KAAI;;;;;;;;AAQnD,SAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAEpE,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAmB;YACvD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAE9B,gBAAA,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;AACnE,oBAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;;;yBAEjB;wBACL,IAAI,CAAC,MAAM,EAAE;;;;;;IAOvB,MAAM,MAAM,CAAC,WAAmC,EAAA;AAC9C,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,IAAI,UAAU;AACxB,iBAAA,GAAG,CAAC,YAAY,EAAE,UAAU;iBAC5B,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAS;iBAC1C,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAkB;AACvD,iBAAA,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ;AACpC,iBAAA,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ;iBACpC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC;AAEvC,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAE1F,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC3I;;YAGD,IAAI,CAAC,eAAe,CAAC;gBACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,YAAY,EAAE,QAAQ,CAAC,aAAa;gBACpC,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAC9C,aAAA,CAAC;YAEpB,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE;oBACJ,WAAW,EAAE,QAAQ,CAAC,YAAY;oBAClC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;oBAC/D,OAAO,EAAE,QAAQ,CAAC,QAAQ;oBAC1B,YAAY,EAAE,QAAQ,CAAC,aAAc;AACrC,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,QAAQ,CAAC,GAAG;wBAChB,KAAK,EAAE,QAAQ,CAAC,QAAQ;wBACxB,IAAI,EAAE,QAAQ,CAAC,GAAG;wBAClB,MAAM,EAAE,QAAQ,CAAC,OAAO;AACd,qBAAA;AACZ,oBAAA,MAAM,EAAE;wBACN,EAAE,EAAE,QAAQ,CAAC,QAAS;wBACtB,IAAI,EAAE,QAAQ,CAAC,UAAW;wBAC1B,KAAK,EAAE,QAAQ,CAAC,WAAY;AAC7B,qBAAA;AACD,oBAAA,WAAW,EAAE;wBACX,EAAE,EAAE,QAAQ,CAAC,aAAc;wBAC3B,IAAI,EAAE,QAAQ,CAAC,eAAgB;wBAC/B,KAAK,EAAE,QAAQ,CAAC,gBAAgB;AACjC,qBAAA;AACF,iBAAA;aACF;;QACD,OAAO,KAAU,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;;AAI3B,IAAA,MAAM,OAAO,GAAA;;;IAIb,MAAM,YAAY,CAAC,OAA0B,EAAA;AAC3C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACrF,IAAI,aAAa,EAAE;gBACjB,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AAC/C,wBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;AAClD,qBAAA;iBACF;;iBACI;AACL,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;;QAE3B,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;;AAI7B,IAAA,MAAM,OAAO,CAAC,QAAiB,EAAE,aAAsB,EAAA;AACrD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;AACxD,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK;AAE/B,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU;AACxB,aAAA,GAAG,CAAC,YAAY,EAAE,eAAe;aACjC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAS;aAC1C,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAkB;AACvD,aAAA,GAAG,CAAC,eAAe,EAAE,YAAY;AACjC,aAAA,GAAG,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE;AAC9B,aAAA,GAAG,CAAC,eAAe,EAAE,aAAa,IAAI,EAAE,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAE1F,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC3I;YACD,IAAI,CAAC,eAAe,CAAC;gBACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,YAAY,EAAE,QAAQ,CAAC,aAAa;gBACpC,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAC9C,aAAA,CAAC;AAEpB,YAAA,OAAO,IAAI;;QACX,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,YAAA,OAAO,KAAK;;;AAIhB,IAAA,sBAAsB,CAAC,eAAuB,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC;QACxC,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;;AAGjC,IAAA,eAAe,CAAC,QAAwB,EAAA;QAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC3D,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY;AAC/D,QAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAU,CAAC;YACpE,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,MAAM,WAAW;;;;;;;IAQ1D,YAAY,GAAA;QAClB,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,SAAS;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAmB;;AAG3D,QAAA,OAAO,QAAQ;;AAGV,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;;AAErC,IAAA,qBAAqB,CAAC,mBAA2B,EAAA;AACtD,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAmB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;;IAEhE,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACvB,YAAA,qBAAqB,EAAE;AACxB,SAAA,CAAC;;AAGI,IAAA,WAAW,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AACxC,aAAA,IAAI,KAAK,EAAE,OAAO,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;aACzB;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;;;AAKvD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,WAAW;;8GAhOT,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCTY,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC;;AAI9E,IAAA,OAAO,CAAC,OAA0B,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;AAUvG,IAAA,KAAK,CAAC,OAAY,EAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAClF,QAAA,OAAO,YAAY;;8GApBV,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;MCCY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAa,CAAA,aAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,uBAAuB;QAC9D,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,YAAY;;IAG1D,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAG7I,MAAM,GAAG,CAAC,MAAiB,EAAA;AACzB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;;AAGlB,IAAA,cAAc,CAAC,IAAS,EAAA;QAC9B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;;SAEpC;;8GApBQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MC2CY,YAAY,CAAA;8GAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAZ,YAAY,EAAA,OAAA,EAAA,CAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAvBZ,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,0BAA0B;AACrC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,uBAAuB;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE,oBAAoB;AAC/B,aAAA;SACF,EA1BC,OAAA,EAAA,CAAA,WAAW,CAAC,OAAO,EAAE;YACrB,aAAa,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,CAAC,eAAe,CAAC;aAC9B,CAAC,CAAA,EAAA,CAAA,CAAA;;2FAyBO,YAAY,EAAA,UAAA,EAAA,CAAA;kBA9BxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW,CAAC,OAAO,EAAE;wBACrB,aAAa,CAAC,OAAO,CAAC;4BACpB,UAAU,EAAE,CAAC,eAAe,CAAC;yBAC9B,CAAC;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,0BAA0B;AACrC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC9B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,uBAAuB;AAClC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,QAAQ,EAAE,oBAAoB;AAC/B,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AChDD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-connectivity-api.mjs","sources":["../../../../libs/connectivity/api/src/lib/api-storage.service.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/application.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/configuration.service.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/feature.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/permission.loader.ts","../../../../libs/connectivity/api/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/connectivity/api/src/lib/api.module.ts","../../../../libs/connectivity/api/src/acorex-connectivity-api.ts"],"sourcesContent":["import {\n AXP_ROOT_CONFIG_TOKEN,\n AXPEntityStorageService,\n AXPFilterOperatorMiddlewareService,\n AXPPagedListResult,\n AXPQueryRequest,\n} from '@acorex/platform/common';\nimport { AXPEntityResolver } from '@acorex/platform/layout/entity';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { kebabCase } from 'lodash-es';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXCApiEntityStorageService implements AXPEntityStorageService<string, any> {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private filterService = inject(AXPFilterOperatorMiddlewareService);\n private entityResolver = inject(AXPEntityResolver);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n get dbName(): string {\n return 'ACoreXPlatform';\n }\n\n getConfigEntity(entityName: string) {\n const [module, entity] = entityName.split('.');\n const moduleKebab = kebabCase(module);\n const entityKebab = kebabCase(entity);\n return {\n module: moduleKebab,\n entity: entityKebab,\n };\n }\n\n async initial<T = any>(entityName: string, collection: T[]): Promise<void> {\n //const exists = await this.table('entity-store').where({ entityName }).count();\n // if (exists === 0) {\n // await this.table('entity-store').bulkAdd(collection.map((item) => ({ ...item, entityName })));\n // }\n }\n\n async getOne<T = any>(entityName: string, id: string): Promise<T> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.get<T>(url));\n }\n\n async updateOne<T = any>(entityName: string, id: string, keyValue: { [key: string]: any }): Promise<T> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}${id ? '/' + id : ''}`;\n return firstValueFrom(this.http.put<T>(url, keyValue));\n }\n\n async deleteOne(entityName: string, id: string): Promise<void> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}/${id}`;\n firstValueFrom(this.http.delete(url));\n }\n\n async insertOne<T = any>(entityName: string, entityItem: T): Promise<string> {\n const routeElement = await this.getConfigEntity(entityName);\n const url = `${this.mainUrl}/${routeElement.module}/${routeElement.entity}`;\n return firstValueFrom(this.http.post<string>(url, entityItem));\n }\n\n async getAll<T = any>(entityName: string): Promise<T[]> {\n return [];\n }\n\n async query<T = any>(entityName: string, request: AXPQueryRequest): Promise<AXPPagedListResult<T>> {\n const routeElement = await this.getConfigEntity(entityName);\n\n let httpParams = new HttpParams().set('Skip', request.skip).set('Take', request.take);\n if (request?.sort && request?.sort.length > 0) {\n const sortParam = request?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n\n const greaterThanOperator = this.filterService.getOperator('greaterThan');\n const lessThanOperator = this.filterService.getOperator('lessThan');\n function generateQueryString(filter: any) {\n if (!filter.filters) {\n // Base case: single filter\n if (typeof filter.value === 'object' && filter.operator.type === 'between') {\n return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;\n } else {\n return `${filter.field} ${filter.operator.type} '${filter.value}'`;\n }\n } else if (!filter.filters.length) {\n return;\n } else {\n // Recursive case: multiple filters\n\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\n }\n }\n\n let queryString = '';\n\n if (request.filter) {\n const filter = request.filter;\n if (filter.filters && filter.filters.length > 0) {\n // Construct filter string from provided filters\n\n const dynamicQueries = generateQueryString(filter);\n console.log({ dynamicQueries: dynamicQueries });\n\n // Append dynamic filters to custom filter, if both exist\n queryString = (queryString ? `${queryString},${dynamicQueries}` : dynamicQueries) as string;\n }\n }\n // Set the $filter parameter if there are any filters\n if (queryString) {\n httpParams = httpParams.set('$query', queryString);\n }\n return firstValueFrom(\n this.http.get<any>(`${this.mainUrl}/${routeElement.module}/${routeElement.entity}`, { params: httpParams })\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n}\n","import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n constructor(private http: HttpClient) { }\n\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Promise<void> {\n return Promise.resolve();\n }\n\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n\n private mapToAXPApplication(item: any): AXPApplication {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\n\nexport interface Localization {\n values: Record<string, Record<string, string>>;\n resources: Record<string, Resource>;\n languages: Language[];\n currentCulture: Culture;\n defaultResourceName: string;\n languagesMap: Record<string, NameValue[]>;\n languageFilesMap: Record<string, NameValue[]>;\n}\n\nexport interface Resource {\n texts: Record<string, string>;\n baseResources: string[];\n}\n\nexport interface Language {\n cultureName: string;\n uiCultureName: string;\n displayName: string;\n twoLetterISOLanguageName: string;\n flagIcon: string;\n}\n\nexport interface Culture {\n displayName: string;\n // ... other properties\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\nexport interface Auth {\n grantedPolicies: Record<string, boolean>;\n}\n\n// Main configuration interface\nexport interface ApplicationConfiguration {\n localization: Localization;\n auth: Auth;\n setting: Record<string, any>;\n currentUser: any;\n features: Record<string, any>;\n globalFeatures: Record<string, any>;\n multiTenancy: Record<string, any>;\n currentCulture: Culture;\n timing: Record<string, any>;\n clock: Record<string, any>;\n objectExtensions: Record<string, any>;\n extraProperties: Record<string, any>;\n\n // ... other properties\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMConfigurationService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private applicationConfig: ApplicationConfiguration | null = null;\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n private fetchInProgress: boolean = false;\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n\n constructor(private http: HttpClient) {\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n\n public init(): Observable<ApplicationConfiguration> {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\n tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n })\n );\n } else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(\n filter((config): config is ApplicationConfiguration => config !== null),\n take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n\n getConfig(): Observable<ApplicationConfiguration> {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n } else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(\n filter((config) => config !== null),\n take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig!))\n );\n }\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n\n private list: AXPFeature[] = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ]\n\n getList(): Observable<AXPFeature[]> {\n return of(this.list).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private aXMAuthConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private oauthService: OAuthService = inject(OAuthService);\n private http: HttpClient = inject(HttpClient);\n public userInfo: any;\n public authConfig: AuthConfig;\n public openidConfigurationInfo: any; // clarify the type if possible\n\n public async configureOAuth(): Promise<void> {\n if (this.openidConfigurationInfo) return;\n\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n\n if (oidcJson) {\n const authData = JSON.parse(oidcJson) as AXPSessionData;\n if (authData) {\n this.setServiceProps(authData);\n\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n // this.refresh();\n } else {\n this.logout();\n }\n }\n }\n }\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\n await this.configureOAuth();\n try {\n const body = new HttpParams()\n .set('grant_type', 'password')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('username', credentials.username)\n .set('password', credentials.password)\n .set('scope', this.authConfig.scope!);\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n\n // const authData = new AuthenticationData(response);\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return {\n succeed: true,\n data: {\n accessToken: response.access_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n idToken: response.id_token,\n refreshToken: response.refresh_token!,\n user: {\n id: response.sub,\n title: response.fullname,\n name: response.sub,\n avatar: response.picture,\n } as AXPUser,\n tenant: {\n id: response.tenantid!,\n name: response.tenantname!,\n title: response.tenanttitle!,\n },\n application: {\n id: response.applicationid!,\n name: response.applicationname!,\n title: response.applicationtitle,\n },\n },\n };\n } catch (error: any) {\n this.handleError(error);\n }\n }\n\n async signout(): Promise<void> {\n //this.logout();\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n try {\n await this.configureOAuth();\n const refreshResult = await this.refresh(context.tenant?.id, context.application?.id);\n if (refreshResult) {\n return {\n succeed: true,\n data: {\n accessToken: this.oauthService.getAccessToken(),\n refreshToken: this.oauthService.getRefreshToken(),\n },\n };\n } else {\n return { succeed: false };\n }\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n async refresh(tenantId?: string, applicationId?: string): Promise<boolean> {\n await this.configureOAuth();\n const authData = this.loadAuthData();\n if (!authData) return false;\n\n const refreshToken = this.oauthService.getRefreshToken();\n if (!refreshToken) return false;\n\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('refresh_token', refreshToken)\n .set('tenantId', tenantId ?? '')\n .set('applicationId', applicationId ?? '');\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n try {\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return true;\n } catch (error) {\n console.error('Token refresh error', error);\n return false;\n }\n }\n\n expires_in_milisecound(expires_in_date: string): number {\n const now = new Date();\n const expire = new Date(expires_in_date);\n return expire.getTime() - now.getTime();\n }\n\n private setServiceProps(authData: AXPSessionData): void {\n this.oauthService.getAccessToken = () => authData.accessToken;\n this.oauthService.getIdToken = () => authData.idToken ?? '';\n this.oauthService.getRefreshToken = () => authData.refreshToken;\n if (authData.expiresIn) {\n const refreshTime = this.expires_in_milisecound(authData.expiresIn!);\n this.oauthService.getAccessTokenExpiration = () => refreshTime;\n // if (refreshTime < 0) {\n // this.refresh();\n // }else{\n // }\n }\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n const authDataJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (!authDataJson) return undefined;\n\n const authData = JSON.parse(authDataJson) as AXPSessionData;\n\n // return authData ? new AuthenticationData(authData) : undefined;\n return authData;\n }\n\n public async loadUserInfo(): Promise<object> {\n return this.oauthService.loadUserProfile();\n }\n public calculateExpireInDate(expireInMilisecound: number) {\n return new Date(Date.now() + expireInMilisecound * 1000).toISOString();\n }\n private logout(): void {\n this.oauthService.logOut({\n noRedirectToLogoutUrl: true\n });\n }\n\n private handleError(error: any): never {\n if (error?.reason) {\n throw new Error(JSON.stringify(error.reason));\n } else if (error?.message) {\n throw new Error(error.message);\n } else {\n throw new Error('Network or server error occurred');\n }\n }\n\n //#region getter\n get name(): string {\n return 'user-pass';\n }\n //#endregion\n}\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n// export class AuthenticationData {\n// access_token: string;\n// applicationid?: string;\n// applicationname?: string;\n// applicationtitle?: string;\n// editionid?: string;\n// editionname?: string;\n// editiontitle?: string;\n// id_token?: string;\n// refresh_token?: string;\n// scope?: string;\n// tenantid?: string;\n// tenantname?: string;\n// tenanttitle?: string;\n// token_type?: string;\n// expires_in_date?: string;\n// sub?: string;\n// picture?: string;\n// fullname?: string;\n\n// constructor(data: AuthenticationDataModel) {\n// this.access_token = data.access_token;\n// this.applicationid = data.applicationid;\n// this.applicationname = data.applicationname;\n// this.applicationtitle = data.applicationtitle;\n// this.editionid = data.editionid;\n// this.editionname = data.editionname;\n// this.editiontitle = data.editiontitle;\n// this.id_token = data.id_token;\n// this.refresh_token = data.refresh_token;\n// this.scope = data.scope;\n// this.tenantid = data.tenantid;\n// this.tenantname = data.tenantname;\n// this.tenanttitle = data.tenanttitle;\n// this.token_type = data.token_type;\n// this.sub = data.sub;\n// this.picture = data.picture;\n// this.fullname = data.fullname;\n\n// if (data.expires_in) {\n// this.expires_in_date = new Date(Date.now() + data.expires_in * 1000).toISOString();\n// } else {\n// this.expires_in_date = data.expires_in_date || '';\n// }\n// }\n\n// get expires_in_milisecound(): number {\n// const now = new Date();\n// const expire = new Date(this.expires_in_date!);\n// return expire.getTime() - now.getTime();\n// }\n\n// public setTokenRefreshModel(data: AuthenticationDataModel): void {\n// this.access_token = data.access_token;\n// this.id_token = data.id_token;\n// this.token_type = data.token_type;\n// this.scope = data.scope;\n// this.refresh_token = data.refresh_token;\n// this.expires_in_date = new Date(Date.now() + data.expires_in! * 1000).toISOString();\n// }\n// }\n\nexport interface IAuthenticationDataModel {\n access_token: string;\n applicationid: string;\n applicationname: string;\n applicationtitle: string;\n editionid: string;\n editionname: string;\n editiontitle: string;\n id_token: string;\n refresh_token: string;\n scope: string;\n tenantid: string;\n tenantname: string;\n tenanttitle: string;\n token_type: string;\n expires_in?: number;\n sub?: string;\n fullname?: string;\n picture?: string;\n}\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n\n constructor(private http: HttpClient) {}\n\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n\n mapTo(jsonObj: any): string[] {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n}\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPTenant[]> {\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n async set(tenant: AXPTenant): Promise<void> {\n return Promise.resolve();\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import {\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n AXPAuthModule,\n} from '@acorex/platform/auth';\nimport { AXPEntityStorageService } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { AXCApiEntityStorageService } from './api-storage.service';\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\n\n@NgModule({\n imports: [\n OAuthModule.forRoot(),\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy],\n }),\n ],\n providers: [\n {\n provide: AXPEntityStorageService,\n useClass: AXCApiEntityStorageService,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n ],\n})\nexport class AXCApiModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { APPLICATION_SOURCE_NAME, MODULE_SOURCE_NAME, ENTITY_SOURCE_NAME, FEATUR
2
2
  import { AXMNotificationService } from '@acorex/modules/notification-management';
3
3
  import * as i1$1 from '@acorex/platform/auth';
4
4
  import { AXPSessionService, AXPAuthModule } from '@acorex/platform/auth';
5
- import { AXPDataGenerator, AXPDexieEntityStorageService, AXP_DATA_SEEDER_TOKEN, AXPEntityStorageService } from '@acorex/platform/common';
5
+ import { AXPDataGenerator, AXPDexieEntityStorageService, AXP_DATA_SEEDER_TOKEN, AXPEntityStorageService, AXPFileStorageStatus, AXPFileStorageService } from '@acorex/platform/common';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable, NgModule } from '@angular/core';
8
8
  import { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
@@ -14,9 +14,8 @@ import { AXMTextTemplateManagementModuleConst } from '@acorex/modules/text-templ
14
14
  import { AXP_WIDGET_DATASOURCE_PROVIDER } from '@acorex/platform/layout/builder';
15
15
  import { convertArrayToDataSource } from '@acorex/components/common';
16
16
  import { AXMFormTemplateManagementModuleConst } from '@acorex/modules/form-template-management';
17
- import { Observable } from 'rxjs';
18
17
  import Dexie from 'dexie';
19
- import { AXPFileManagementService } from '@acorex/platform/widgets';
18
+ import { AXFileService } from '@acorex/core/file';
20
19
 
21
20
  const APPLICATIONS = Array.from({ length: 5 }).map((_, i) => {
22
21
  const source = ['appOne', 'appTwo', 'appThree', 'myCoolApp', 'awesomeApp', 'superApp'];
@@ -1003,97 +1002,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1003
1002
  }]
1004
1003
  }] });
1005
1004
 
1006
- // Define the database structure using Dexie
1007
- class FileDatabase extends Dexie {
1005
+ class FileStorageDatabase extends Dexie {
1008
1006
  constructor() {
1009
- super('FileStorageDB');
1007
+ super('FileStorageDatabase');
1010
1008
  this.version(1).stores({
1011
- files: 'fileId', // Primary key
1009
+ files: 'fileId,refId,refType,category,isPrimary,status',
1012
1010
  });
1013
1011
  }
1014
1012
  }
1015
- class AXPFileManagementServiceMock {
1016
- constructor() {
1017
- this.db = new FileDatabase();
1013
+ const db = new FileStorageDatabase();
1014
+ class AXCFileStorageService {
1015
+ async mapToFileStorageInfo(record) {
1016
+ if (!record) {
1017
+ throw new Error('Record not found');
1018
+ }
1019
+ const { binary, ...fileInfo } = record;
1020
+ const url = await this.fileService.blobToBase64(binary);
1021
+ return { ...fileInfo, url };
1018
1022
  }
1019
- async upload(requests) {
1020
- const tasks = requests.map((r) => new Promise(async (resolve, reject) => {
1021
- try {
1022
- const fileId = crypto.randomUUID();
1023
- const fileRecord = {
1024
- fileId,
1025
- file: r.file,
1026
- metadata: null,
1027
- };
1028
- await this.db.files.add(fileRecord);
1029
- r.finish();
1030
- resolve({ fileId, status: 'success' });
1031
- }
1032
- catch (error) {
1033
- r.error(error.message || 'Error saving file');
1034
- reject({ status: 'failed', error });
1035
- }
1036
- }));
1037
- return Promise.allSettled(tasks);
1023
+ async save(request) {
1024
+ const fileId = crypto.randomUUID();
1025
+ const fileInfo = {
1026
+ fileId,
1027
+ refId: request.refId,
1028
+ refType: request.refType,
1029
+ category: request.category,
1030
+ size: request.file.size,
1031
+ mimeType: request.file.type,
1032
+ uploadedAt: new Date(),
1033
+ isPublic: request.metadata?.["isPublic"] || true,
1034
+ isPrimary: request.isPrimary || false,
1035
+ status: AXPFileStorageStatus.Temporary, // Use enum
1036
+ };
1037
+ // Save the binary content along with metadata in Dexie
1038
+ await db.files.add({ ...fileInfo, binary: request.file });
1039
+ return fileInfo;
1038
1040
  }
1039
- async delete(fileId) {
1040
- try {
1041
- await this.db.files.delete(fileId);
1042
- return { success: true, fileId };
1041
+ async commit(fileId) {
1042
+ const file = await db.files.get(fileId);
1043
+ if (!file) {
1044
+ throw new Error('File not found');
1043
1045
  }
1044
- catch (error) {
1045
- throw new Error(`Failed to delete file: ${error.message}`);
1046
+ file.status = AXPFileStorageStatus.Committed; // Use enum
1047
+ await db.files.put(file);
1048
+ }
1049
+ async markForDeletion(fileId) {
1050
+ const file = await db.files.get(fileId);
1051
+ if (!file) {
1052
+ throw new Error('File not found');
1046
1053
  }
1054
+ file.status = AXPFileStorageStatus.PendingDeletion; // Use enum
1055
+ await db.files.put(file);
1047
1056
  }
1048
- get(fileId, name) {
1049
- return new Observable((observer) => {
1050
- (async () => {
1051
- try {
1052
- const fileRecord = await this.db.files.get(fileId);
1053
- if (fileRecord) {
1054
- observer.next({ ...fileRecord, status: 'success' });
1055
- observer.complete();
1056
- }
1057
- else {
1058
- observer.error({ status: 'not_found', fileId });
1059
- }
1060
- }
1061
- catch (error) {
1062
- observer.error({ status: 'failed', error });
1063
- }
1064
- })();
1057
+ async update(request) {
1058
+ const file = await db.files.get(request.fileId);
1059
+ if (!file) {
1060
+ throw new Error('File not found');
1061
+ }
1062
+ const updatedFileInfo = {
1063
+ ...file,
1064
+ ...request.metadata,
1065
+ isPrimary: request.isPrimary !== undefined ? request.isPrimary : file.isPrimary,
1066
+ };
1067
+ await db.files.put(updatedFileInfo);
1068
+ return this.mapToFileStorageInfo(updatedFileInfo);
1069
+ }
1070
+ async find(request) {
1071
+ const files = await db.files.toArray();
1072
+ const filteredFiles = files.filter((file) => {
1073
+ return ((!request.refId || file.refId === request.refId) &&
1074
+ (!request.refType || file.refType === request.refType) &&
1075
+ (!request.category || file.category === request.category) &&
1076
+ (!request.isPrimary || file.isPrimary === request.isPrimary) &&
1077
+ (!request.isPublic || file.isPublic === request.isPublic) &&
1078
+ (!request.mimeType || file.mimeType === request.mimeType) &&
1079
+ (!request.uploadedAtRange ||
1080
+ (file.uploadedAt >= request.uploadedAtRange.from &&
1081
+ file.uploadedAt <= request.uploadedAtRange.to)) &&
1082
+ file.status === AXPFileStorageStatus.Committed // Use enum
1083
+ );
1065
1084
  });
1085
+ // Map all filtered files to `AXPFileStorageInfo`
1086
+ return Promise.all(filteredFiles.map((file) => this.mapToFileStorageInfo(file)));
1066
1087
  }
1067
- async list() {
1068
- try {
1069
- const files = await this.db.files.toArray();
1070
- return files;
1071
- }
1072
- catch (error) {
1073
- throw new Error(`Failed to list files: ${error.message}`);
1088
+ async getInfo(fileId) {
1089
+ // Simulate a delay of 2 seconds (2000 milliseconds)
1090
+ await new Promise((resolve) => setTimeout(resolve, 2000));
1091
+ const file = await db.files.get(fileId);
1092
+ return this.mapToFileStorageInfo(file);
1093
+ }
1094
+ async remove(fileId) {
1095
+ await db.files.delete(fileId);
1096
+ }
1097
+ async cleanupTemporaryFiles() {
1098
+ const files = await db.files.toArray();
1099
+ const temporaryFiles = files.filter((file) => file.status === AXPFileStorageStatus.Temporary);
1100
+ for (const file of temporaryFiles) {
1101
+ await db.files.delete(file.fileId);
1074
1102
  }
1075
1103
  }
1076
- async setMetadata(fileId, metadata) {
1077
- try {
1078
- const fileRecord = await this.db.files.get(fileId);
1079
- if (!fileRecord) {
1080
- throw new Error(`File with ID ${fileId} not found`);
1104
+ async cleanupMarkedFiles(gracePeriod) {
1105
+ const now = new Date();
1106
+ const files = await db.files.toArray();
1107
+ for (const file of files) {
1108
+ if (file.status === AXPFileStorageStatus.PendingDeletion &&
1109
+ now.getTime() - file.uploadedAt.getTime() > gracePeriod) {
1110
+ await db.files.delete(file.fileId);
1081
1111
  }
1082
- await this.db.files.update(fileId, { metadata });
1083
- return { fileId, metadata };
1084
- }
1085
- catch (error) {
1086
- throw new Error(`Failed to update metadata: ${error.message}`);
1087
1112
  }
1088
1113
  }
1089
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFileManagementServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1090
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFileManagementServiceMock, providedIn: 'root' }); }
1114
+ // Semi-background cleanup job
1115
+ constructor() {
1116
+ this.fileService = inject(AXFileService);
1117
+ setInterval(() => {
1118
+ this.cleanupMarkedFiles(5 * 60 * 1000) // Grace period: 5 minutes in milliseconds
1119
+ .catch((error) => console.error('Error during cleanup:', error));
1120
+ this.cleanupTemporaryFiles() // Ensure temporary files are cleaned
1121
+ .catch((error) => console.error('Error during cleanup:', error));
1122
+ }, 5 * 60 * 1000); // Runs every 5 minutes
1123
+ }
1124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCFileStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1125
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCFileStorageService }); }
1091
1126
  }
1092
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFileManagementServiceMock, decorators: [{
1093
- type: Injectable,
1094
- args: [{
1095
- providedIn: 'root',
1096
- }]
1127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCFileStorageService, decorators: [{
1128
+ type: Injectable
1097
1129
  }], ctorParameters: () => [] });
1098
1130
 
1099
1131
  class AXCMockModule {
@@ -1140,8 +1172,8 @@ class AXCMockModule {
1140
1172
  useClass: AXCModuleDesignerService,
1141
1173
  },
1142
1174
  {
1143
- provide: AXPFileManagementService,
1144
- useClass: AXPFileManagementServiceMock,
1175
+ provide: AXPFileStorageService,
1176
+ useClass: AXCFileStorageService,
1145
1177
  },
1146
1178
  ], imports: [AXPAuthModule.forRoot({
1147
1179
  strategies: [MOCKStrategy],
@@ -1201,8 +1233,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1201
1233
  useClass: AXCModuleDesignerService,
1202
1234
  },
1203
1235
  {
1204
- provide: AXPFileManagementService,
1205
- useClass: AXPFileManagementServiceMock,
1236
+ provide: AXPFileStorageService,
1237
+ useClass: AXCFileStorageService,
1206
1238
  },
1207
1239
  ],
1208
1240
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-connectivity-mock.mjs","sources":["../../../../libs/connectivity/mock/src/lib/application-management/application-management-mock-data.ts","../../../../libs/connectivity/mock/src/lib/application-management/application.seeder.ts","../../../../libs/connectivity/mock/src/lib/application-management/mock-module-designer.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.mock.data.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.seeder.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.mock.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.mock.data.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.seeder.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.mock.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/conversation.module.ts","../../../../libs/connectivity/mock/src/lib/mock.strategy.ts","../../../../libs/connectivity/mock/src/lib/notification-management/notification/notification.mock.service.ts","../../../../libs/connectivity/mock/src/lib/platform-management/global-variables/global-variables.mock.data.ts","../../../../libs/connectivity/mock/src/lib/platform-management/global-variables/global-variable.seeder.ts","../../../../libs/connectivity/mock/src/lib/scheduler-job-management/scheduler-job-management.mock.data.ts","../../../../libs/connectivity/mock/src/lib/scheduler-job-management/scheduler-job.seeder.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/text-template-management.mock.data.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/category.seeder.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/template.seeder.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/datasource-provider.mock.service.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/category.seeder.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/form-template-management-mock.module.ts","../../../../libs/connectivity/mock/src/lib/file.mock.service.ts","../../../../libs/connectivity/mock/src/lib/mock.module.ts","../../../../libs/connectivity/mock/src/acorex-connectivity-mock.ts"],"sourcesContent":["import { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const APPLICATIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['appOne', 'appTwo', 'appThree', 'myCoolApp', 'awesomeApp', 'superApp'];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const MODULES = Array.from({ length: 5 }).map((_, i) => {\n const source = [\n 'UserManagement',\n 'Analytics',\n 'Reporting',\n 'PaymentGateway',\n 'NotificationService',\n 'InventoryManagement',\n ];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const APPLICATIONS_MODULES = Array.from({ length: 5 }).map((_, i) => {\n return {\n id: AXPDataGenerator.uuid(),\n application: AXPDataGenerator.pick(APPLICATIONS),\n module: AXPDataGenerator.pick(MODULES),\n };\n});\n\nexport const EDITIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['Standard', 'Premium', 'Gold', 'Silver', 'Bronze', 'Platinum', 'Enterprise'];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n application: AXPDataGenerator.pick(APPLICATIONS),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const FEATURES = Array.from({ length: 5 }).map((_, i) => {\n const source = [\n 'User Authentication',\n 'Data Encryption',\n 'Real-time Notifications',\n 'Customizable Dashboards',\n 'API Access',\n 'Multi-language Support',\n 'Analytics and Reporting',\n 'Offline Mode',\n ];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const ENTITIES = Array.from({ length: 5 }).map((_, i) => {\n const source = ['User', 'Product', 'Order', 'Customer', 'Transaction', 'Category', 'Review', 'InventoryItem'];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\nexport const PERMISSIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['Read', 'Write', 'Update', 'Delete', 'ManageUsers', 'ViewReports', 'AccessSettings', 'CreateContent'];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const PROPERTIES = Array.from({ length: 10 }).map((_, i) => {\n const source = [\n 'property1',\n 'property2',\n 'property3',\n 'property4',\n 'property5',\n 'property6',\n 'property7',\n 'property8',\n ];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n entityId: AXPDataGenerator.pick(ENTITIES).id,\n name: name,\n title: name,\n path: name,\n };\n});\n","import {\n APPLICATION_SOURCE_NAME,\n AXMApplicationEntityModel,\n AXMEditionEntityModel,\n AXMEntityEntityModel,\n AXMFeatureEntityModel,\n AXMModuleEntityModel,\n AXMPermissionEntityModel,\n AXMPropertyEntityModel,\n ENTITY_SOURCE_NAME,\n FEATURE_SOURCE_NAME,\n MODULE_SOURCE_NAME,\n PERMISSION_SOURCE_NAME,\n PROPERTY_SOURCE_NAME,\n} from '@acorex/modules/application-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport {\n APPLICATIONS,\n EDITIONS,\n ENTITIES,\n FEATURES,\n MODULES,\n PERMISSIONS,\n PROPERTIES,\n} from './application-management-mock-data';\n\n@Injectable()\nexport class AXPApplicationTemplateDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n const applications = this.storageService.initial<AXMApplicationEntityModel>(APPLICATION_SOURCE_NAME, APPLICATIONS);\n const modules = this.storageService.initial<AXMModuleEntityModel>(MODULE_SOURCE_NAME, MODULES);\n const entities = this.storageService.initial<AXMEntityEntityModel>(ENTITY_SOURCE_NAME, ENTITIES);\n const features = this.storageService.initial<AXMFeatureEntityModel>(FEATURE_SOURCE_NAME, FEATURES);\n const permissions = this.storageService.initial<AXMPermissionEntityModel>(PERMISSION_SOURCE_NAME, PERMISSIONS);\n const editions = this.storageService.initial<AXMEditionEntityModel>(PERMISSION_SOURCE_NAME, EDITIONS);\n const properties = this.storageService.initial<AXMPropertyEntityModel>(PROPERTY_SOURCE_NAME, PROPERTIES);\n\n await Promise.all([applications, modules, entities, features, permissions, editions, properties]);\n }\n}\n","import { AXDataSourceQuery } from '@acorex/components/common';\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXCModuleDesignerService implements AXPModuleDesignerService {\n protected loader: any = inject(AXPEntityDefinitionRegistryService);\n\n protected defaultConfig = {\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: 'equal' as any,\n },\n };\n\n protected AdvanceConfig = (moduleId: string): AXDataSourceQuery => ({\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: { type: 'equal' },\n filters: [\n {\n field: 'moduleId',\n operator: { type: 'equal' },\n value: moduleId,\n },\n ],\n },\n });\n\n private async moduleDef() {\n return this.loader.resolve('application-management', 'module');\n }\n private async entityDef() {\n return this.loader.resolve('application-management', 'entity');\n }\n private async featureDef() {\n return this.loader.resolve('application-management', 'feature');\n }\n private async permissionDef() {\n return this.loader.resolve('application-management', 'permission');\n }\n\n async getModules() {\n const entity: AXPEntity = await this.moduleDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.defaultConfig);\n }\n\n async getSingleModule() {}\n\n async createModule(payload: any): Promise<any> {}\n\n async updateModule(moduleId: string, payload: any): Promise<any> {}\n\n async deleteModule(moduleId: string): Promise<any> {}\n\n //\n\n async getEntities(moduleId: string) {\n const entity: AXPEntity = await this.entityDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleEntity(entityId: string) {}\n\n async createEntity(payload: any): Promise<any> {}\n\n async updateEntity(payload: any): Promise<any> {}\n\n async deleteEntity(entityId: string): Promise<any> {}\n\n //\n\n async getFeatures(moduleId: string) {\n const entity: AXPEntity = await this.featureDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleFeature(featureId: string) {}\n\n async createFeature(payload: any): Promise<any> {}\n\n async updateFeature(payload: any): Promise<any> {}\n\n async deleteFeature(featureId: string): Promise<any> {}\n\n //\n\n async getPermissions(moduleId: string) {\n const entity: AXPEntity = await this.permissionDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSinglePermission(permissionId: string) {}\n\n async createPermission(payload: any): Promise<any> {}\n\n async updatePermission(payload: any): Promise<any> {}\n\n async deletePermission(permissionId: string): Promise<any> {}\n}\n","import { AXMChatMessage, AXMChatRoom, AXMChatUserDetails } from '@acorex/modules/conversation';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const generateChatUser = (): AXMChatUserDetails => ({\n id: AXPDataGenerator.uuid(),\n userName: AXPDataGenerator.firstName().toLowerCase(),\n firstName: AXPDataGenerator.firstName(),\n lastName: AXPDataGenerator.lastName(),\n picture: null, // Can replace with a mock image URL if needed\n});\n\nexport const generateChatMessage = (): AXMChatMessage => ({\n content: `${AXPDataGenerator.pick([\n 'Hello!',\n 'How are you?',\n 'Can we schedule a meeting?',\n 'Looking forward to your response.',\n 'This is a test message.',\n 'Let’s catch up soon!',\n 'Good job on this!',\n 'Here is the update you requested.',\n ])}`,\n contentType: AXPDataGenerator.pick(['text', 'image', 'video']),\n hasSeen: AXPDataGenerator.boolean(),\n createdAt: AXPDataGenerator.date(new Date(2021), new Date()),\n createdBy: generateChatUser(),\n});\n\nexport const CHAT: AXMChatRoom[] = Array.from({ length: 10 }).map(() => {\n const roomMembersCount = AXPDataGenerator.number(2, 10);\n const roomMembers = Array.from({ length: roomMembersCount }).map(() => generateChatUser());\n\n return {\n id: AXPDataGenerator.uuid(),\n title: AXPDataGenerator.pick([\n 'General Discussion',\n 'Project Alpha',\n 'Team Meeting',\n 'Client Communication',\n 'Random Chat',\n ]),\n lastMessage: generateChatMessage(),\n roomMembers,\n unreadCount: AXPDataGenerator.number(0, 20),\n };\n});\n","import { AXMChatRoom, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { CHAT } from './chat.mock.data';\n\n@Injectable()\nexport class AXPChatDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMChatRoom>(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.chatName}`,\n CHAT\n );\n }\n}\n","import { AXMChatServiceImpl, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { Injectable } from '@angular/core';\n\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXMChatMockService\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXMChatMockService\" class.\nexport class AXMChatMockService extends AXMChatServiceImpl {\n override async getTotalUnread(): Promise<number> {\n const chatList = await super.storageService.getAll(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.chatName}`\n );\n const totalUnread = chatList.reduce((acc, curr) => (acc += curr.unreadCount > 0), 0);\n return totalUnread;\n }\n override async markChatAsRead(roomId: string): Promise<void> {\n const oldChat = await super.getOne(roomId);\n await super.updateOne(roomId, { ...oldChat, unreadCount: 0 });\n return;\n }\n}\n","// import { AXPDataGenerator, AXPEntityStorageService } from '@acorex/platform/common';\n// import {\n// AXPComment,\n// AXPCommentCreateRequest,\n// AXPCommentDeleteRequest,\n// AXPCommentGetRequest,\n// AXPCommentLikeRequest,\n// AXPCommentResponse,\n// AXPCommentUpdateRequest,\n// } from '@acorex/platform/themes/shared';\n// import { inject, Injectable } from '@angular/core';\n\n// @Injectable({\n// providedIn: 'root',\n// })\n// export class AXMMockCommentService {\n// private storageService = inject(AXPEntityStorageService);\n// private name = 'comments';\n\n// async get(params: AXPCommentGetRequest): Promise<AXPCommentResponse> {\n// const items = (await this.storageService.getAll(this.name)) as AXPComment[];\n// return { totalCount: items.length, items };\n// }\n\n// async create(payload: AXPCommentCreateRequest): Promise<string> {\n// const fullPayload = {\n// ...payload,\n// id: AXPDataGenerator.uuid(),\n// memberId: AXPDataGenerator.uuid(),\n// memberType: AXPDataGenerator.pick(['user', 'admin']),\n// roomId: AXPDataGenerator.uuid(),\n// messageVisibles: [],\n// messageStatuses: [],\n// messageHistories: [],\n// replies: [],\n// isArchived: false,\n// isLiked: false,\n// reactionsCount: 0,\n// repliesCount: 0,\n// user: {\n// userName: AXPDataGenerator.firstName().toLowerCase(),\n// firstName: AXPDataGenerator.firstName(),\n// lastName: AXPDataGenerator.lastName(),\n// picture: null,\n// id: AXPDataGenerator.uuid(),\n// },\n// };\n\n// if (payload.replyId) {\n// const message = await this.storageService.getOne(this.name, payload.replyId);\n// await this.storageService.updateOne(this.name, payload.replyId, {\n// ...message,\n// replies: [...message.replies, fullPayload],\n// });\n// } else {\n// await this.storageService.insertOne(this.name, fullPayload);\n// }\n\n// return 'done';\n// }\n\n// async update(payload: AXPCommentUpdateRequest): Promise<string> {\n// await this.storageService.updateOne(this.name, payload.id, { content: payload.content });\n// return 'done';\n// }\n\n// async delete(payload: AXPCommentDeleteRequest): Promise<void> {\n// await this.storageService.deleteOne(this.name, payload.id);\n// }\n\n// async like(payload: AXPCommentLikeRequest): Promise<string> {\n// const message = await this.storageService.getOne(this.name, payload.messageId);\n\n// if (message) {\n// const isLiked = !message.isLiked;\n// const reactionsCount = isLiked ? message.reactionsCount + 1 : message.reactionsCount - 1;\n// await this.storageService.updateOne(this.name, payload.messageId, { ...message, isLiked, reactionsCount });\n// } else {\n// const comments = (await this.storageService.getAll(this.name)) as AXPComment[];\n// const commentWithReply = comments.find((comment) =>\n// comment.replies.some((reply) => reply.id === payload.messageId)\n// );\n\n// if (commentWithReply) {\n// commentWithReply.replies = commentWithReply.replies.map((reply) =>\n// reply.id === payload.messageId\n// ? {\n// ...reply,\n// isLiked: !reply.isLiked,\n// reactionsCount: reply.isLiked ? reply.reactionsCount - 1 : reply.reactionsCount + 1,\n// }\n// : reply\n// );\n// await this.storageService.updateOne(this.name, commentWithReply.id, commentWithReply);\n// } else {\n// throw new Error('No comment with this ID found.');\n// }\n// }\n\n// return 'done';\n// }\n// }\n\nimport { AXMComment } from '@acorex/modules/conversation';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const generateUser = () => ({\n userName: AXPDataGenerator.firstName().toLowerCase(),\n firstName: AXPDataGenerator.firstName(),\n lastName: AXPDataGenerator.lastName(),\n picture: null,\n id: AXPDataGenerator.uuid(),\n});\n\nexport const COMMENTS: AXMComment[] = Array.from({ length: 10 }).map(() => {\n const contentSource = [\n 'This is a comment.',\n 'I really like this!',\n 'Could you clarify your point?',\n 'Great job on this!',\n 'I have some suggestions.',\n 'This is quite insightful.',\n 'Thanks for sharing!',\n 'I disagree with this perspective.',\n 'Interesting take!',\n 'What do you think about this?',\n ];\n\n const repliesCount = AXPDataGenerator.number(0, 3);\n\n return {\n id: AXPDataGenerator.uuid(),\n content: `<p>${AXPDataGenerator.pick(contentSource)}</p>`,\n contentType: AXPDataGenerator.pick(['text', 'image', 'video']),\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n isPrivate: AXPDataGenerator.boolean(),\n replyId: null,\n messageVisibles: [], // Ensure AXPCommentVisibleMessage[] type is defined\n messageStatuses: [], // Ensure AXPCommentStatusMessage[] type is defined\n messageHistories: [], // Ensure AXPCommentHistoryMessage[] type is defined\n replies: Array.from({ length: repliesCount }).map(() => ({\n id: AXPDataGenerator.uuid(),\n content: `<p>${AXPDataGenerator.pick(contentSource)}</p>`,\n contentType: 'text',\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n isPrivate: AXPDataGenerator.boolean(),\n replyId: AXPDataGenerator.uuid(),\n messageVisibles: [],\n messageStatuses: [],\n messageHistories: [],\n isArchived: AXPDataGenerator.boolean(),\n isLiked: AXPDataGenerator.boolean(),\n reactionsCount: AXPDataGenerator.number(0, 10),\n repliesCount: 0,\n user: generateUser(), // Ensure AXPCommentUserDetails type is defined\n replies: [], // Add an empty replies array here to match the AXPComment type\n })),\n isArchived: AXPDataGenerator.boolean(),\n isLiked: AXPDataGenerator.boolean(),\n reactionsCount: AXPDataGenerator.number(0, 100),\n repliesCount,\n user: generateUser(), // Ensure AXPCommentUserDetails type is defined\n createdAt: AXPDataGenerator.date(new Date(2021), new Date()),\n };\n});\n","import { AXMComment, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { COMMENTS } from './comment.mock.data';\n\n@Injectable()\nexport class AXPCommentDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMComment>(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.commentName}`,\n COMMENTS\n );\n }\n}\n","import {\n AXMComment,\n AXMCommentCreateRequest,\n AXMCommentServiceImpl,\n AXMMessageReactionEntityModel,\n} from '@acorex/modules/conversation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataGenerator } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXMCommentMockService\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXMCommentMockService\" class.\nexport class AXMCommentMockService extends AXMCommentServiceImpl {\n private sessionService = inject(AXPSessionService);\n\n override async insertOne(request: AXMCommentCreateRequest): Promise<string> {\n const fullPayload: AXMComment = {\n ...request,\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n messageVisibles: [],\n messageStatuses: [],\n messageHistories: [],\n replies: [],\n isArchived: false,\n isLiked: false,\n reactionsCount: 0,\n repliesCount: 0,\n user: {\n userName: this.sessionService.user?.name ?? AXPDataGenerator.firstName().toLowerCase(),\n firstName: this.sessionService.user?.name ?? AXPDataGenerator.firstName(),\n lastName: this.sessionService.user?.name ?? AXPDataGenerator.lastName(),\n picture: this.sessionService.user?.avatar ?? null,\n id: this.sessionService.user?.id ?? AXPDataGenerator.uuid(),\n },\n createdAt: new Date(),\n id: AXPDataGenerator.uuid(),\n };\n\n if (request.replyId) {\n const message = await super.getOne(request.replyId);\n await super.updateOne(request.replyId, {\n ...message,\n replies: [...message.replies, fullPayload],\n });\n } else {\n await super.insertOne(fullPayload as any);\n //await super.storageService.insertOne('comments', fullPayload);\n }\n return 'done';\n }\n\n override async like(payload: AXMMessageReactionEntityModel): Promise<string> {\n debugger;\n const comment = await super.getOne(payload.messageId);\n\n if (comment) {\n const isLiked = !comment.isLiked;\n const reactionsCount = isLiked ? comment.reactionsCount + 1 : comment.reactionsCount - 1;\n\n await super.updateOne(payload.messageId, { ...comment, isLiked, reactionsCount });\n } else {\n const allComments = await super.query({\n skip: 0,\n take: 9999,\n });\n\n const commentWithReply = allComments.items.find((comment) =>\n comment?.replies?.some((reply) => reply.id === payload.messageId)\n );\n\n if (commentWithReply) {\n commentWithReply.replies = commentWithReply.replies.map((reply) =>\n reply.id === payload.messageId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked ? reply.reactionsCount - 1 : reply.reactionsCount + 1,\n }\n : reply\n );\n await super.updateOne(commentWithReply.id, commentWithReply);\n } else {\n throw new Error('No comment with this ID found.');\n }\n }\n\n return 'done';\n }\n}\n","import { AXMCommentService } from '@acorex/modules/backend';\nimport { AXMChatModule, AXMChatService } from '@acorex/modules/conversation';\nimport { AXP_DATA_SEEDER_TOKEN } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { AXPChatDataSeeder } from './chat';\nimport { AXMChatMockService } from './chat/chat.mock.service';\nimport { AXMCommentMockService, AXPCommentDataSeeder } from './comments';\n\n@NgModule({\n imports: [\n AXMChatModule.forRoot({\n provider: [\n {\n provide: AXMChatService,\n useClass: AXMChatMockService,\n },\n ],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPChatDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPCommentDataSeeder,\n multi: true,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentMockService,\n },\n // {\n // provide: AXMChatService,\n // useClass: AXMChatMockService,\n // },\n ],\n})\nexport class AXCConversationMockModule {}\n","import {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\n\nexport interface MockUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n@Injectable()\nexport class MOCKStrategy implements AXPAuthStrategy {\n constructor() {}\n\n get name(): string {\n return 'user-pass';\n }\n\n async signin(credentials: MockUserPassCredentials): Promise<AXPSignInResult> {\n try {\n if (credentials.username == 'root' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-46a7-b81c-7cf9468ae831',\n name: 'Root',\n title: 'Root User',\n avatar: 'https://avatar.iran.liara.run/public/29',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n if (credentials.username == 'admin' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-46a7-b81c-7cf9468ae831',\n name: 'Admin',\n title: 'Admin User',\n avatar: 'https://avatar.iran.liara.run/public/47',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n if (credentials.username == 'user' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-76a7-b81c-7cf9468ae831',\n name: 'User',\n title: 'Sample User',\n avatar: 'https://avatar.iran.liara.run/public/56',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n return {\n succeed: false,\n };\n } catch (error: any) {\n if (error?.message) throw new Error(error.message);\n // Depending on the error type, you might want to throw a specific error\n throw new Error('Network or server error occurred');\n }\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n return {\n succeed: true,\n data: {\n accessToken: 'access_token',\n refreshToken: 'refresh_token',\n application: context.application,\n tenant: context.tenant,\n },\n };\n }\n}\n","import {\n AXMNotificationCategory,\n AXMNotificationChannel,\n AXMNotificationItem,\n AXMNotificationMarkAsReadRequest,\n AXMNotificationPrority,\n AXMNotificationResponse,\n AXMNotificationType,\n} from '@acorex/modules/notification-management';\nimport { AXPDataGenerator, AXPEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMMockNotificationService {\n private storageService = inject(AXPEntityStorageService);\n private name = 'notifications';\n\n async getList(): Promise<AXMNotificationResponse> {\n await this.storageService.initial(this.name, NOTIFICATIONS);\n const items = (await this.storageService.getAll(this.name)) as AXMNotificationItem[];\n return { total: items.length, items };\n }\n\n async markAsRead(payload?: AXMNotificationMarkAsReadRequest): Promise<void> {\n const notifications = (await this.storageService.getAll(this.name)) as AXMNotificationItem[];\n\n if (!payload) {\n notifications\n .filter((item) => !item.readAt)\n .forEach((item) => this.storageService.updateOne(this.name, item.id, { ...item, readAt: new Date() }));\n } else {\n for (const id of payload.id) {\n const item = await this.storageService.getOne(this.name, id);\n const readAt = item.readAt ? null : new Date();\n this.storageService.updateOne(this.name, item.id, { ...item, readAt });\n }\n }\n }\n\n async create(payload?: AXMNotificationItem): Promise<void> {\n const notification = payload || generateNotification();\n await this.storageService.insertOne(this.name, notification);\n }\n}\n\nconst CHANNELS = ['InApp', 'Email', 'SMS'];\nconst TITLES = ['Buy Me!', 'Black Friday', 'New Message'];\nconst BODIES = ['Buy New Glass From Shop', 'New Offers For Black Friday!', 'Saeed Send New File Message'];\nconst CATEGORIES = ['Inbox', 'Archive'];\nconst TYPES = ['File', 'Person', 'Notification'];\nconst PRIORITIES = ['Warning', 'Danger', 'Notice'];\n\nexport const NOTIFICATIONS = Array.from({ length: 5 }).map(generateNotification);\n\nfunction generateNotification(): AXMNotificationItem {\n return {\n id: AXPDataGenerator.uuid(),\n title: AXPDataGenerator.pick(TITLES),\n body: AXPDataGenerator.pick(BODIES),\n channel: AXPDataGenerator.pick(CHANNELS) as AXMNotificationChannel,\n content: {\n type: AXPDataGenerator.pick(TYPES) as AXMNotificationType,\n data: {},\n },\n user: {\n id: AXPDataGenerator.uuid(),\n name: `${AXPDataGenerator.firstName()} ${AXPDataGenerator.lastName()}`,\n image: 'https://i.pravatar.cc/300',\n },\n template: {\n category: AXPDataGenerator.pick(CATEGORIES) as AXMNotificationCategory,\n prority: AXPDataGenerator.pick(PRIORITIES) as AXMNotificationPrority,\n icon: 'fa-image',\n isPinned: AXPDataGenerator.boolean(),\n },\n readAt: AXPDataGenerator.pick([new Date(), null]),\n createAt: AXPDataGenerator.date(new Date(2021), new Date()),\n entityName: 'notifications',\n };\n}\n","import { AXPDataGenerator } from '@acorex/platform/common';\n\nconst names = ['key', 'counter', 'logo', 'tenant'];\nconst data = [\n ['key1', 'string'],\n ['sequence', 'integer'],\n ['appLogo', 'function'],\n ['CompanyName', 'function'],\n];\n\nexport const GLOBAL_VARIABLES = Array.from({ length: 4 }).map((element, i) => {\n return {\n id: AXPDataGenerator.uuid(),\n name: names[i],\n title: names[i],\n dataType: data[i][1],\n dataValue: data[i][0],\n };\n});\n","import { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { GLOBAL_VARIABLES } from './global-variables.mock.data';\n\n@Injectable()\nexport class AXPGlobalVariablesDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial('globalVariable', GLOBAL_VARIABLES);\n }\n}\n","import { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const SCHEDULER_JOB = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'backup',\n title: 'Backup Data',\n process: 'backup',\n trigger: '00*1*?*',\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'cancelOrder',\n title: 'Auto Cancel Ecommerce Orders',\n process: 'cancelOrder',\n trigger: '0*1/2?***',\n },\n];\n","import {\n AXMSchedulerJobManagementModuleConst,\n AXMSchedulerJobManagementSchedulerJobEntityModel,\n} from '@acorex/modules/scheduler-job-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { SCHEDULER_JOB } from './scheduler-job-management.mock.data';\n\n@Injectable()\nexport class AXPSchedulerJobDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMSchedulerJobManagementSchedulerJobEntityModel>(\n `${AXMSchedulerJobManagementModuleConst.moduleName}.${AXMSchedulerJobManagementModuleConst.schedulerJobEntity}`,\n SCHEDULER_JOB\n );\n }\n}\n","import { AXMTextTemplateManagementTemplateEntityModel } from '@acorex/modules/text-template-management';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const TEXT_TEMPLATE_CATEGORY = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'security',\n title: 'Security',\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'marketing',\n title: 'Marketing',\n },\n];\n\nexport const TEXT_TEMPLATES: AXMTextTemplateManagementTemplateEntityModel[] = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'RestPassword',\n title: 'Rest Password',\n content: `\n<tr>\n <td>\n <p>Hi {{user_name}},</p>\n <p>We received a request to reset your password for your account. If you didn’t make this request, you can ignore this email. Otherwise, you can reset your password using the link below:</p>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"{{Reset Password Link}}\" style=\"background-color: #007bff; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Reset Password</a>\n </p>\n <p style=\"font-size: 12px; color: #666666;\">*This link will expire in {{Expiration Time}}*</p>\n <p>If the link above doesn’t work, copy and paste the following URL into your browser:</p>\n <p style=\"color: #007bff;\">{{Reset Password URL}}</p>\n <p>For your security, please make sure to keep your new password safe and avoid using it for other sites.</p>\n <p>If you have any questions, feel free to reach out to our support team at <a href=\"mailto:{{Support Email}}\">{{Support Email}}</a>.</p>\n <p>Best regards,<br>{{Company Name}} Support Team</p>\n </td>\n</tr>\n`,\n category: TEXT_TEMPLATE_CATEGORY[0],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'NewDevice',\n title: 'New Device Login',\n content: `\n <tr>\n <td>\n <p>Hi {{User's Name}},</p>\n <p>We detected a login to your account from a new device. If this was you, there’s nothing you need to do. If you didn’t sign in from a new device, please review your account for any unauthorized activity.</p>\n <p style=\"font-weight: bold;\">Device Information:</p>\n <ul>\n <li><strong>Device:</strong> {{Device Type}}</li>\n <li><strong>Location:</strong> {{Location, e.g., City, Country}}</li>\n <li><strong>Date & Time:</strong> {{Date and Time}}</li>\n <li><strong>IP Address:</strong> {{IP Address}}</li>\n </ul>\n <p>If you have any concerns, please secure your account by resetting your password and enabling two-factor authentication.</p>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"https://example.com/security-settings\" style=\"background-color: #007bff; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Review Account Security</a>\n </p>\n <p>Thank you for helping us keep your account safe.</p>\n <p>Best regards,<br>{{Your Company Name}} Security Team</p>\n </td>\n </tr>\n `,\n category: TEXT_TEMPLATE_CATEGORY[0],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'offer',\n title: 'Offer',\n content: `\n<tr>\n <td>\n <p>Hi {{user_name}},</p>\n <p>We're excited to bring you an exclusive offer! For a limited time, you can enjoy {{Discount Percentage}}% off on {{Product or Service Name}}. Don’t miss out on this amazing deal!</p>\n <p style=\"font-weight: bold;\">Offer Details:</p>\n <ul>\n <li><strong>Discount:</strong> {{Discount Percentage}}%</li>\n <li><strong>Valid Until:</strong> {{Expiration Date}}</li>\n <li><strong>Promo Code:</strong> <span style=\"color: #007bff;\">{{Promo Code}}</span></li>\n </ul>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"{{Offer Link}}\" style=\"background-color: #ff9800; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Redeem Offer</a>\n </p>\n <p>Thank you for being a valued customer. We hope you enjoy this special offer!</p>\n <p>Best regards,<br>{{Company Name}} Team</p>\n </td>\n</tr>\n`,\n category: TEXT_TEMPLATE_CATEGORY[1],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n];\n","import {\n AXMTextTemplateManagementCategoryEntityModel,\n AXMTextTemplateManagementModuleConst,\n} from '@acorex/modules/text-template-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { TEXT_TEMPLATE_CATEGORY } from './text-template-management.mock.data';\n\n@Injectable()\nexport class AXPTextTemplateCategoryDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMTextTemplateManagementCategoryEntityModel>(\n `${AXMTextTemplateManagementModuleConst.moduleName}.${AXMTextTemplateManagementModuleConst.categoryEntity}`,\n TEXT_TEMPLATE_CATEGORY\n );\n }\n}\n","import {\n AXMTextTemplateManagementModuleConst,\n AXMTextTemplateManagementTemplateEntityModel,\n} from '@acorex/modules/text-template-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { TEXT_TEMPLATES } from './text-template-management.mock.data';\n\n@Injectable()\nexport class AXPTextTemplateDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMTextTemplateManagementTemplateEntityModel>(\n `${AXMTextTemplateManagementModuleConst.moduleName}.${AXMTextTemplateManagementModuleConst.templateEntity}`,\n TEXT_TEMPLATES\n );\n }\n}\n","import { convertArrayToDataSource } from '@acorex/components/common';\nimport { AXPWidgetDataSource, AXPWidgetDataSourceProvider } from '@acorex/platform/layout/builder';\n\nexport class AXPMockWidgetDataSourceProvider implements AXPWidgetDataSourceProvider {\n async items(): Promise<AXPWidgetDataSource[]> {\n return [\n {\n name: 'mock.users',\n title: 'Users',\n columns: [],\n samples: [\n {\n id: '2',\n title: 'Alex Jakson',\n },\n {\n id: '3',\n title: 'Emma Smith',\n },\n ],\n source: () =>\n convertArrayToDataSource([\n {\n id: '1',\n title: 'Arash Oshnoudi',\n },\n {\n id: '2',\n title: 'Alex Smith',\n },\n {\n id: '3',\n title: 'Emma Jakson',\n },\n ]),\n },\n ];\n }\n}\n","import { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMFormTemplateManagementCategoryEntityModel, AXMFormTemplateManagementModuleConst } from '@acorex/modules/form-template-management';\n\n\n@Injectable()\nexport class AXPFormTemplateCategoryDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMFormTemplateManagementCategoryEntityModel>(\n `${AXMFormTemplateManagementModuleConst.moduleName}.${AXMFormTemplateManagementModuleConst.categoryEntity}`,\n [\n {\n title: 'Risk Assessment'\n },\n {\n title: 'Servicing'\n },\n {\n title: 'Checklists'\n }\n ]);\n }\n}\n","import { AXP_WIDGET_DATASOURCE_PROVIDER } from '@acorex/platform/layout/builder';\nimport { NgModule } from '@angular/core';\nimport { AXPMockWidgetDataSourceProvider } from './datasource-provider.mock.service';\nimport { AXP_DATA_SEEDER_TOKEN } from '@acorex/platform/common';\nimport { AXPFormTemplateCategoryDataSeeder } from './category.seeder';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n\n {\n provide: AXP_WIDGET_DATASOURCE_PROVIDER,\n useClass: AXPMockWidgetDataSourceProvider,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPFormTemplateCategoryDataSeeder,\n multi: true,\n },\n ],\n})\nexport class AXCFormTemplateManagementMockModule { }\n","import { AXUploadRequest } from '@acorex/components/uploader';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport Dexie from 'dexie';\n\n// Define the database structure using Dexie\nclass FileDatabase extends Dexie {\n files: Dexie.Table<{ fileId: string; file: Blob; metadata: any }, string>;\n\n constructor() {\n super('FileStorageDB');\n this.version(1).stores({\n files: 'fileId', // Primary key\n });\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPFileManagementServiceMock {\n private db: FileDatabase;\n\n constructor() {\n this.db = new FileDatabase();\n }\n\n async upload(requests: AXUploadRequest[]): Promise<PromiseSettledResult<unknown>[]> {\n const tasks = requests.map((r) =>\n new Promise(async (resolve, reject) => {\n try {\n const fileId = crypto.randomUUID();\n const fileRecord = {\n fileId,\n file: r.file,\n metadata: null,\n };\n\n await this.db.files.add(fileRecord);\n\n r.finish();\n resolve({ fileId, status: 'success' });\n } catch (error: any) {\n r.error(error.message || 'Error saving file');\n reject({ status: 'failed', error });\n }\n })\n );\n\n return Promise.allSettled(tasks);\n }\n\n async delete(fileId: string): Promise<any> {\n try {\n await this.db.files.delete(fileId);\n return { success: true, fileId };\n } catch (error: any) {\n throw new Error(`Failed to delete file: ${error.message}`);\n }\n }\n\n get(fileId: string, name: string): Observable<any> {\n return new Observable((observer) => {\n (async () => {\n try {\n const fileRecord = await this.db.files.get(fileId);\n if (fileRecord) {\n observer.next({ ...fileRecord, status: 'success' });\n observer.complete();\n } else {\n observer.error({ status: 'not_found', fileId });\n }\n } catch (error: any) {\n observer.error({ status: 'failed', error });\n }\n })();\n });\n }\n\n async list(): Promise<any> {\n try {\n const files = await this.db.files.toArray();\n return files;\n } catch (error: any) {\n throw new Error(`Failed to list files: ${error.message}`);\n }\n }\n\n async setMetadata(fileId: string, metadata: any): Promise<any> {\n try {\n const fileRecord = await this.db.files.get(fileId);\n\n if (!fileRecord) {\n throw new Error(`File with ID ${fileId} not found`);\n }\n\n await this.db.files.update(fileId, { metadata });\n return { fileId, metadata };\n } catch (error: any) {\n throw new Error(`Failed to update metadata: ${error.message}`);\n }\n }\n}\n","import { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXMNotificationService } from '@acorex/modules/notification-management';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_DATA_SEEDER_TOKEN, AXPDexieEntityStorageService, AXPEntityStorageService } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { AXPApplicationTemplateDataSeeder } from './application-management';\nimport { AXCModuleDesignerService } from './application-management/mock-module-designer.service';\nimport { AXCConversationMockModule } from './conversation/conversation.module';\nimport { MOCKStrategy } from './mock.strategy';\nimport { AXMMockNotificationService } from './notification-management/notification/notification.mock.service';\nimport { AXPGlobalVariablesDataSeeder } from './platform-management';\nimport { AXPSchedulerJobDataSeeder } from './scheduler-job-management';\nimport { AXPTextTemplateCategoryDataSeeder, AXPTextTemplateDataSeeder } from './text-template-management';\nimport { AXCFormTemplateManagementMockModule } from './form-template-management/form-template-management-mock.module';\nimport { AXPFileManagementServiceMock } from './file.mock.service';\nimport { AXPFileManagementService } from '@acorex/platform/widgets';\n\n@NgModule({\n imports: [\n AXPAuthModule.forRoot({\n strategies: [MOCKStrategy],\n }),\n AXCFormTemplateManagementMockModule,\n AXCConversationMockModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n AXPDexieEntityStorageService,\n {\n provide: AXMNotificationService,\n useClass: AXMMockNotificationService,\n },\n\n {\n provide: AXPEntityStorageService,\n useClass: AXPDexieEntityStorageService,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPGlobalVariablesDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPTextTemplateCategoryDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPTextTemplateDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPApplicationTemplateDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPSchedulerJobDataSeeder,\n multi: true,\n },\n {\n provide: AXPModuleDesignerService,\n useClass: AXCModuleDesignerService,\n },\n {\n provide: AXPFileManagementService,\n useClass: AXPFileManagementServiceMock,\n },\n ],\n})\nexport class AXCMockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-connectivity-mock.mjs","sources":["../../../../libs/connectivity/mock/src/lib/application-management/application-management-mock-data.ts","../../../../libs/connectivity/mock/src/lib/application-management/application.seeder.ts","../../../../libs/connectivity/mock/src/lib/application-management/mock-module-designer.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.mock.data.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.seeder.ts","../../../../libs/connectivity/mock/src/lib/conversation/chat/chat.mock.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.mock.data.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.seeder.ts","../../../../libs/connectivity/mock/src/lib/conversation/comments/comment.mock.service.ts","../../../../libs/connectivity/mock/src/lib/conversation/conversation.module.ts","../../../../libs/connectivity/mock/src/lib/mock.strategy.ts","../../../../libs/connectivity/mock/src/lib/notification-management/notification/notification.mock.service.ts","../../../../libs/connectivity/mock/src/lib/platform-management/global-variables/global-variables.mock.data.ts","../../../../libs/connectivity/mock/src/lib/platform-management/global-variables/global-variable.seeder.ts","../../../../libs/connectivity/mock/src/lib/scheduler-job-management/scheduler-job-management.mock.data.ts","../../../../libs/connectivity/mock/src/lib/scheduler-job-management/scheduler-job.seeder.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/text-template-management.mock.data.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/category.seeder.ts","../../../../libs/connectivity/mock/src/lib/text-template-management/template.seeder.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/datasource-provider.mock.service.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/category.seeder.ts","../../../../libs/connectivity/mock/src/lib/form-template-management/form-template-management-mock.module.ts","../../../../libs/connectivity/mock/src/lib/platform-management/file-storage/file-storage-service.ts","../../../../libs/connectivity/mock/src/lib/mock.module.ts","../../../../libs/connectivity/mock/src/acorex-connectivity-mock.ts"],"sourcesContent":["import { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const APPLICATIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['appOne', 'appTwo', 'appThree', 'myCoolApp', 'awesomeApp', 'superApp'];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const MODULES = Array.from({ length: 5 }).map((_, i) => {\n const source = [\n 'UserManagement',\n 'Analytics',\n 'Reporting',\n 'PaymentGateway',\n 'NotificationService',\n 'InventoryManagement',\n ];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const APPLICATIONS_MODULES = Array.from({ length: 5 }).map((_, i) => {\n return {\n id: AXPDataGenerator.uuid(),\n application: AXPDataGenerator.pick(APPLICATIONS),\n module: AXPDataGenerator.pick(MODULES),\n };\n});\n\nexport const EDITIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['Standard', 'Premium', 'Gold', 'Silver', 'Bronze', 'Platinum', 'Enterprise'];\n const name = AXPDataGenerator.pick(source);\n\n return {\n id: AXPDataGenerator.uuid(),\n application: AXPDataGenerator.pick(APPLICATIONS),\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const FEATURES = Array.from({ length: 5 }).map((_, i) => {\n const source = [\n 'User Authentication',\n 'Data Encryption',\n 'Real-time Notifications',\n 'Customizable Dashboards',\n 'API Access',\n 'Multi-language Support',\n 'Analytics and Reporting',\n 'Offline Mode',\n ];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const ENTITIES = Array.from({ length: 5 }).map((_, i) => {\n const source = ['User', 'Product', 'Order', 'Customer', 'Transaction', 'Category', 'Review', 'InventoryItem'];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\nexport const PERMISSIONS = Array.from({ length: 5 }).map((_, i) => {\n const source = ['Read', 'Write', 'Update', 'Delete', 'ManageUsers', 'ViewReports', 'AccessSettings', 'CreateContent'];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n moduleId: AXPDataGenerator.pick(MODULES).id,\n name: name,\n title: name,\n isArchived: AXPDataGenerator.boolean(),\n };\n});\n\nexport const PROPERTIES = Array.from({ length: 10 }).map((_, i) => {\n const source = [\n 'property1',\n 'property2',\n 'property3',\n 'property4',\n 'property5',\n 'property6',\n 'property7',\n 'property8',\n ];\n const name = AXPDataGenerator.pick(source);\n return {\n id: AXPDataGenerator.uuid(),\n entityId: AXPDataGenerator.pick(ENTITIES).id,\n name: name,\n title: name,\n path: name,\n };\n});\n","import {\n APPLICATION_SOURCE_NAME,\n AXMApplicationEntityModel,\n AXMEditionEntityModel,\n AXMEntityEntityModel,\n AXMFeatureEntityModel,\n AXMModuleEntityModel,\n AXMPermissionEntityModel,\n AXMPropertyEntityModel,\n ENTITY_SOURCE_NAME,\n FEATURE_SOURCE_NAME,\n MODULE_SOURCE_NAME,\n PERMISSION_SOURCE_NAME,\n PROPERTY_SOURCE_NAME,\n} from '@acorex/modules/application-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport {\n APPLICATIONS,\n EDITIONS,\n ENTITIES,\n FEATURES,\n MODULES,\n PERMISSIONS,\n PROPERTIES,\n} from './application-management-mock-data';\n\n@Injectable()\nexport class AXPApplicationTemplateDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n const applications = this.storageService.initial<AXMApplicationEntityModel>(APPLICATION_SOURCE_NAME, APPLICATIONS);\n const modules = this.storageService.initial<AXMModuleEntityModel>(MODULE_SOURCE_NAME, MODULES);\n const entities = this.storageService.initial<AXMEntityEntityModel>(ENTITY_SOURCE_NAME, ENTITIES);\n const features = this.storageService.initial<AXMFeatureEntityModel>(FEATURE_SOURCE_NAME, FEATURES);\n const permissions = this.storageService.initial<AXMPermissionEntityModel>(PERMISSION_SOURCE_NAME, PERMISSIONS);\n const editions = this.storageService.initial<AXMEditionEntityModel>(PERMISSION_SOURCE_NAME, EDITIONS);\n const properties = this.storageService.initial<AXMPropertyEntityModel>(PROPERTY_SOURCE_NAME, PROPERTIES);\n\n await Promise.all([applications, modules, entities, features, permissions, editions, properties]);\n }\n}\n","import { AXDataSourceQuery } from '@acorex/components/common';\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXCModuleDesignerService implements AXPModuleDesignerService {\n protected loader: any = inject(AXPEntityDefinitionRegistryService);\n\n protected defaultConfig = {\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: 'equal' as any,\n },\n };\n\n protected AdvanceConfig = (moduleId: string): AXDataSourceQuery => ({\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: { type: 'equal' },\n filters: [\n {\n field: 'moduleId',\n operator: { type: 'equal' },\n value: moduleId,\n },\n ],\n },\n });\n\n private async moduleDef() {\n return this.loader.resolve('application-management', 'module');\n }\n private async entityDef() {\n return this.loader.resolve('application-management', 'entity');\n }\n private async featureDef() {\n return this.loader.resolve('application-management', 'feature');\n }\n private async permissionDef() {\n return this.loader.resolve('application-management', 'permission');\n }\n\n async getModules() {\n const entity: AXPEntity = await this.moduleDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.defaultConfig);\n }\n\n async getSingleModule() {}\n\n async createModule(payload: any): Promise<any> {}\n\n async updateModule(moduleId: string, payload: any): Promise<any> {}\n\n async deleteModule(moduleId: string): Promise<any> {}\n\n //\n\n async getEntities(moduleId: string) {\n const entity: AXPEntity = await this.entityDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleEntity(entityId: string) {}\n\n async createEntity(payload: any): Promise<any> {}\n\n async updateEntity(payload: any): Promise<any> {}\n\n async deleteEntity(entityId: string): Promise<any> {}\n\n //\n\n async getFeatures(moduleId: string) {\n const entity: AXPEntity = await this.featureDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleFeature(featureId: string) {}\n\n async createFeature(payload: any): Promise<any> {}\n\n async updateFeature(payload: any): Promise<any> {}\n\n async deleteFeature(featureId: string): Promise<any> {}\n\n //\n\n async getPermissions(moduleId: string) {\n const entity: AXPEntity = await this.permissionDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSinglePermission(permissionId: string) {}\n\n async createPermission(payload: any): Promise<any> {}\n\n async updatePermission(payload: any): Promise<any> {}\n\n async deletePermission(permissionId: string): Promise<any> {}\n}\n","import { AXMChatMessage, AXMChatRoom, AXMChatUserDetails } from '@acorex/modules/conversation';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const generateChatUser = (): AXMChatUserDetails => ({\n id: AXPDataGenerator.uuid(),\n userName: AXPDataGenerator.firstName().toLowerCase(),\n firstName: AXPDataGenerator.firstName(),\n lastName: AXPDataGenerator.lastName(),\n picture: null, // Can replace with a mock image URL if needed\n});\n\nexport const generateChatMessage = (): AXMChatMessage => ({\n content: `${AXPDataGenerator.pick([\n 'Hello!',\n 'How are you?',\n 'Can we schedule a meeting?',\n 'Looking forward to your response.',\n 'This is a test message.',\n 'Let’s catch up soon!',\n 'Good job on this!',\n 'Here is the update you requested.',\n ])}`,\n contentType: AXPDataGenerator.pick(['text', 'image', 'video']),\n hasSeen: AXPDataGenerator.boolean(),\n createdAt: AXPDataGenerator.date(new Date(2021), new Date()),\n createdBy: generateChatUser(),\n});\n\nexport const CHAT: AXMChatRoom[] = Array.from({ length: 10 }).map(() => {\n const roomMembersCount = AXPDataGenerator.number(2, 10);\n const roomMembers = Array.from({ length: roomMembersCount }).map(() => generateChatUser());\n\n return {\n id: AXPDataGenerator.uuid(),\n title: AXPDataGenerator.pick([\n 'General Discussion',\n 'Project Alpha',\n 'Team Meeting',\n 'Client Communication',\n 'Random Chat',\n ]),\n lastMessage: generateChatMessage(),\n roomMembers,\n unreadCount: AXPDataGenerator.number(0, 20),\n };\n});\n","import { AXMChatRoom, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { CHAT } from './chat.mock.data';\n\n@Injectable()\nexport class AXPChatDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMChatRoom>(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.chatName}`,\n CHAT\n );\n }\n}\n","import { AXMChatServiceImpl, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { Injectable } from '@angular/core';\n\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXMChatMockService\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXMChatMockService\" class.\nexport class AXMChatMockService extends AXMChatServiceImpl {\n override async getTotalUnread(): Promise<number> {\n const chatList = await super.storageService.getAll(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.chatName}`\n );\n const totalUnread = chatList.reduce((acc, curr) => (acc += curr.unreadCount > 0), 0);\n return totalUnread;\n }\n override async markChatAsRead(roomId: string): Promise<void> {\n const oldChat = await super.getOne(roomId);\n await super.updateOne(roomId, { ...oldChat, unreadCount: 0 });\n return;\n }\n}\n","// import { AXPDataGenerator, AXPEntityStorageService } from '@acorex/platform/common';\n// import {\n// AXPComment,\n// AXPCommentCreateRequest,\n// AXPCommentDeleteRequest,\n// AXPCommentGetRequest,\n// AXPCommentLikeRequest,\n// AXPCommentResponse,\n// AXPCommentUpdateRequest,\n// } from '@acorex/platform/themes/shared';\n// import { inject, Injectable } from '@angular/core';\n\n// @Injectable({\n// providedIn: 'root',\n// })\n// export class AXMMockCommentService {\n// private storageService = inject(AXPEntityStorageService);\n// private name = 'comments';\n\n// async get(params: AXPCommentGetRequest): Promise<AXPCommentResponse> {\n// const items = (await this.storageService.getAll(this.name)) as AXPComment[];\n// return { totalCount: items.length, items };\n// }\n\n// async create(payload: AXPCommentCreateRequest): Promise<string> {\n// const fullPayload = {\n// ...payload,\n// id: AXPDataGenerator.uuid(),\n// memberId: AXPDataGenerator.uuid(),\n// memberType: AXPDataGenerator.pick(['user', 'admin']),\n// roomId: AXPDataGenerator.uuid(),\n// messageVisibles: [],\n// messageStatuses: [],\n// messageHistories: [],\n// replies: [],\n// isArchived: false,\n// isLiked: false,\n// reactionsCount: 0,\n// repliesCount: 0,\n// user: {\n// userName: AXPDataGenerator.firstName().toLowerCase(),\n// firstName: AXPDataGenerator.firstName(),\n// lastName: AXPDataGenerator.lastName(),\n// picture: null,\n// id: AXPDataGenerator.uuid(),\n// },\n// };\n\n// if (payload.replyId) {\n// const message = await this.storageService.getOne(this.name, payload.replyId);\n// await this.storageService.updateOne(this.name, payload.replyId, {\n// ...message,\n// replies: [...message.replies, fullPayload],\n// });\n// } else {\n// await this.storageService.insertOne(this.name, fullPayload);\n// }\n\n// return 'done';\n// }\n\n// async update(payload: AXPCommentUpdateRequest): Promise<string> {\n// await this.storageService.updateOne(this.name, payload.id, { content: payload.content });\n// return 'done';\n// }\n\n// async delete(payload: AXPCommentDeleteRequest): Promise<void> {\n// await this.storageService.deleteOne(this.name, payload.id);\n// }\n\n// async like(payload: AXPCommentLikeRequest): Promise<string> {\n// const message = await this.storageService.getOne(this.name, payload.messageId);\n\n// if (message) {\n// const isLiked = !message.isLiked;\n// const reactionsCount = isLiked ? message.reactionsCount + 1 : message.reactionsCount - 1;\n// await this.storageService.updateOne(this.name, payload.messageId, { ...message, isLiked, reactionsCount });\n// } else {\n// const comments = (await this.storageService.getAll(this.name)) as AXPComment[];\n// const commentWithReply = comments.find((comment) =>\n// comment.replies.some((reply) => reply.id === payload.messageId)\n// );\n\n// if (commentWithReply) {\n// commentWithReply.replies = commentWithReply.replies.map((reply) =>\n// reply.id === payload.messageId\n// ? {\n// ...reply,\n// isLiked: !reply.isLiked,\n// reactionsCount: reply.isLiked ? reply.reactionsCount - 1 : reply.reactionsCount + 1,\n// }\n// : reply\n// );\n// await this.storageService.updateOne(this.name, commentWithReply.id, commentWithReply);\n// } else {\n// throw new Error('No comment with this ID found.');\n// }\n// }\n\n// return 'done';\n// }\n// }\n\nimport { AXMComment } from '@acorex/modules/conversation';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const generateUser = () => ({\n userName: AXPDataGenerator.firstName().toLowerCase(),\n firstName: AXPDataGenerator.firstName(),\n lastName: AXPDataGenerator.lastName(),\n picture: null,\n id: AXPDataGenerator.uuid(),\n});\n\nexport const COMMENTS: AXMComment[] = Array.from({ length: 10 }).map(() => {\n const contentSource = [\n 'This is a comment.',\n 'I really like this!',\n 'Could you clarify your point?',\n 'Great job on this!',\n 'I have some suggestions.',\n 'This is quite insightful.',\n 'Thanks for sharing!',\n 'I disagree with this perspective.',\n 'Interesting take!',\n 'What do you think about this?',\n ];\n\n const repliesCount = AXPDataGenerator.number(0, 3);\n\n return {\n id: AXPDataGenerator.uuid(),\n content: `<p>${AXPDataGenerator.pick(contentSource)}</p>`,\n contentType: AXPDataGenerator.pick(['text', 'image', 'video']),\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n isPrivate: AXPDataGenerator.boolean(),\n replyId: null,\n messageVisibles: [], // Ensure AXPCommentVisibleMessage[] type is defined\n messageStatuses: [], // Ensure AXPCommentStatusMessage[] type is defined\n messageHistories: [], // Ensure AXPCommentHistoryMessage[] type is defined\n replies: Array.from({ length: repliesCount }).map(() => ({\n id: AXPDataGenerator.uuid(),\n content: `<p>${AXPDataGenerator.pick(contentSource)}</p>`,\n contentType: 'text',\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n isPrivate: AXPDataGenerator.boolean(),\n replyId: AXPDataGenerator.uuid(),\n messageVisibles: [],\n messageStatuses: [],\n messageHistories: [],\n isArchived: AXPDataGenerator.boolean(),\n isLiked: AXPDataGenerator.boolean(),\n reactionsCount: AXPDataGenerator.number(0, 10),\n repliesCount: 0,\n user: generateUser(), // Ensure AXPCommentUserDetails type is defined\n replies: [], // Add an empty replies array here to match the AXPComment type\n })),\n isArchived: AXPDataGenerator.boolean(),\n isLiked: AXPDataGenerator.boolean(),\n reactionsCount: AXPDataGenerator.number(0, 100),\n repliesCount,\n user: generateUser(), // Ensure AXPCommentUserDetails type is defined\n createdAt: AXPDataGenerator.date(new Date(2021), new Date()),\n };\n});\n","import { AXMComment, AXMConverstionModuleConst } from '@acorex/modules/conversation';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { COMMENTS } from './comment.mock.data';\n\n@Injectable()\nexport class AXPCommentDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMComment>(\n `${AXMConverstionModuleConst.moduleName}.${AXMConverstionModuleConst.commentName}`,\n COMMENTS\n );\n }\n}\n","import {\n AXMComment,\n AXMCommentCreateRequest,\n AXMCommentServiceImpl,\n AXMMessageReactionEntityModel,\n} from '@acorex/modules/conversation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPDataGenerator } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable() //avoid DEPRECATED: DI is instantiating a token \"AXMCommentMockService\" that inherits its @Injectable decorator but does not provide one itself. This will become an error in a future version of Angular. Please add @Injectable() to the \"AXMCommentMockService\" class.\nexport class AXMCommentMockService extends AXMCommentServiceImpl {\n private sessionService = inject(AXPSessionService);\n\n override async insertOne(request: AXMCommentCreateRequest): Promise<string> {\n const fullPayload: AXMComment = {\n ...request,\n memberId: AXPDataGenerator.uuid(),\n memberType: AXPDataGenerator.pick(['user', 'admin']),\n roomId: AXPDataGenerator.uuid(),\n messageVisibles: [],\n messageStatuses: [],\n messageHistories: [],\n replies: [],\n isArchived: false,\n isLiked: false,\n reactionsCount: 0,\n repliesCount: 0,\n user: {\n userName: this.sessionService.user?.name ?? AXPDataGenerator.firstName().toLowerCase(),\n firstName: this.sessionService.user?.name ?? AXPDataGenerator.firstName(),\n lastName: this.sessionService.user?.name ?? AXPDataGenerator.lastName(),\n picture: this.sessionService.user?.avatar ?? null,\n id: this.sessionService.user?.id ?? AXPDataGenerator.uuid(),\n },\n createdAt: new Date(),\n id: AXPDataGenerator.uuid(),\n };\n\n if (request.replyId) {\n const message = await super.getOne(request.replyId);\n await super.updateOne(request.replyId, {\n ...message,\n replies: [...message.replies, fullPayload],\n });\n } else {\n await super.insertOne(fullPayload as any);\n //await super.storageService.insertOne('comments', fullPayload);\n }\n return 'done';\n }\n\n override async like(payload: AXMMessageReactionEntityModel): Promise<string> {\n debugger;\n const comment = await super.getOne(payload.messageId);\n\n if (comment) {\n const isLiked = !comment.isLiked;\n const reactionsCount = isLiked ? comment.reactionsCount + 1 : comment.reactionsCount - 1;\n\n await super.updateOne(payload.messageId, { ...comment, isLiked, reactionsCount });\n } else {\n const allComments = await super.query({\n skip: 0,\n take: 9999,\n });\n\n const commentWithReply = allComments.items.find((comment) =>\n comment?.replies?.some((reply) => reply.id === payload.messageId)\n );\n\n if (commentWithReply) {\n commentWithReply.replies = commentWithReply.replies.map((reply) =>\n reply.id === payload.messageId\n ? {\n ...reply,\n isLiked: !reply.isLiked,\n reactionsCount: reply.isLiked ? reply.reactionsCount - 1 : reply.reactionsCount + 1,\n }\n : reply\n );\n await super.updateOne(commentWithReply.id, commentWithReply);\n } else {\n throw new Error('No comment with this ID found.');\n }\n }\n\n return 'done';\n }\n}\n","import { AXMCommentService } from '@acorex/modules/backend';\nimport { AXMChatModule, AXMChatService } from '@acorex/modules/conversation';\nimport { AXP_DATA_SEEDER_TOKEN } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { AXPChatDataSeeder } from './chat';\nimport { AXMChatMockService } from './chat/chat.mock.service';\nimport { AXMCommentMockService, AXPCommentDataSeeder } from './comments';\n\n@NgModule({\n imports: [\n AXMChatModule.forRoot({\n provider: [\n {\n provide: AXMChatService,\n useClass: AXMChatMockService,\n },\n ],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPChatDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPCommentDataSeeder,\n multi: true,\n },\n {\n provide: AXMCommentService,\n useClass: AXMCommentMockService,\n },\n // {\n // provide: AXMChatService,\n // useClass: AXMChatMockService,\n // },\n ],\n})\nexport class AXCConversationMockModule {}\n","import {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { Injectable } from '@angular/core';\n\nexport interface MockUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n@Injectable()\nexport class MOCKStrategy implements AXPAuthStrategy {\n constructor() {}\n\n get name(): string {\n return 'user-pass';\n }\n\n async signin(credentials: MockUserPassCredentials): Promise<AXPSignInResult> {\n try {\n if (credentials.username == 'root' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-46a7-b81c-7cf9468ae831',\n name: 'Root',\n title: 'Root User',\n avatar: 'https://avatar.iran.liara.run/public/29',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n if (credentials.username == 'admin' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-46a7-b81c-7cf9468ae831',\n name: 'Admin',\n title: 'Admin User',\n avatar: 'https://avatar.iran.liara.run/public/47',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n if (credentials.username == 'user' && credentials.password == '123') {\n const user: AXPUser = {\n id: 'a683a19a-e3eb-76a7-b81c-7cf9468ae831',\n name: 'User',\n title: 'Sample User',\n avatar: 'https://avatar.iran.liara.run/public/56',\n };\n const accessToken = 'access_token';\n const refreshToken = 'refresh_token';\n return {\n succeed: true,\n data: { user, accessToken, refreshToken },\n };\n }\n return {\n succeed: false,\n };\n } catch (error: any) {\n if (error?.message) throw new Error(error.message);\n // Depending on the error type, you might want to throw a specific error\n throw new Error('Network or server error occurred');\n }\n }\n\n async signout(): Promise<void> {\n console.log('User signed out');\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n return {\n succeed: true,\n data: {\n accessToken: 'access_token',\n refreshToken: 'refresh_token',\n application: context.application,\n tenant: context.tenant,\n },\n };\n }\n}\n","import {\n AXMNotificationCategory,\n AXMNotificationChannel,\n AXMNotificationItem,\n AXMNotificationMarkAsReadRequest,\n AXMNotificationPrority,\n AXMNotificationResponse,\n AXMNotificationType,\n} from '@acorex/modules/notification-management';\nimport { AXPDataGenerator, AXPEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMMockNotificationService {\n private storageService = inject(AXPEntityStorageService);\n private name = 'notifications';\n\n async getList(): Promise<AXMNotificationResponse> {\n await this.storageService.initial(this.name, NOTIFICATIONS);\n const items = (await this.storageService.getAll(this.name)) as AXMNotificationItem[];\n return { total: items.length, items };\n }\n\n async markAsRead(payload?: AXMNotificationMarkAsReadRequest): Promise<void> {\n const notifications = (await this.storageService.getAll(this.name)) as AXMNotificationItem[];\n\n if (!payload) {\n notifications\n .filter((item) => !item.readAt)\n .forEach((item) => this.storageService.updateOne(this.name, item.id, { ...item, readAt: new Date() }));\n } else {\n for (const id of payload.id) {\n const item = await this.storageService.getOne(this.name, id);\n const readAt = item.readAt ? null : new Date();\n this.storageService.updateOne(this.name, item.id, { ...item, readAt });\n }\n }\n }\n\n async create(payload?: AXMNotificationItem): Promise<void> {\n const notification = payload || generateNotification();\n await this.storageService.insertOne(this.name, notification);\n }\n}\n\nconst CHANNELS = ['InApp', 'Email', 'SMS'];\nconst TITLES = ['Buy Me!', 'Black Friday', 'New Message'];\nconst BODIES = ['Buy New Glass From Shop', 'New Offers For Black Friday!', 'Saeed Send New File Message'];\nconst CATEGORIES = ['Inbox', 'Archive'];\nconst TYPES = ['File', 'Person', 'Notification'];\nconst PRIORITIES = ['Warning', 'Danger', 'Notice'];\n\nexport const NOTIFICATIONS = Array.from({ length: 5 }).map(generateNotification);\n\nfunction generateNotification(): AXMNotificationItem {\n return {\n id: AXPDataGenerator.uuid(),\n title: AXPDataGenerator.pick(TITLES),\n body: AXPDataGenerator.pick(BODIES),\n channel: AXPDataGenerator.pick(CHANNELS) as AXMNotificationChannel,\n content: {\n type: AXPDataGenerator.pick(TYPES) as AXMNotificationType,\n data: {},\n },\n user: {\n id: AXPDataGenerator.uuid(),\n name: `${AXPDataGenerator.firstName()} ${AXPDataGenerator.lastName()}`,\n image: 'https://i.pravatar.cc/300',\n },\n template: {\n category: AXPDataGenerator.pick(CATEGORIES) as AXMNotificationCategory,\n prority: AXPDataGenerator.pick(PRIORITIES) as AXMNotificationPrority,\n icon: 'fa-image',\n isPinned: AXPDataGenerator.boolean(),\n },\n readAt: AXPDataGenerator.pick([new Date(), null]),\n createAt: AXPDataGenerator.date(new Date(2021), new Date()),\n entityName: 'notifications',\n };\n}\n","import { AXPDataGenerator } from '@acorex/platform/common';\n\nconst names = ['key', 'counter', 'logo', 'tenant'];\nconst data = [\n ['key1', 'string'],\n ['sequence', 'integer'],\n ['appLogo', 'function'],\n ['CompanyName', 'function'],\n];\n\nexport const GLOBAL_VARIABLES = Array.from({ length: 4 }).map((element, i) => {\n return {\n id: AXPDataGenerator.uuid(),\n name: names[i],\n title: names[i],\n dataType: data[i][1],\n dataValue: data[i][0],\n };\n});\n","import { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { GLOBAL_VARIABLES } from './global-variables.mock.data';\n\n@Injectable()\nexport class AXPGlobalVariablesDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial('globalVariable', GLOBAL_VARIABLES);\n }\n}\n","import { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const SCHEDULER_JOB = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'backup',\n title: 'Backup Data',\n process: 'backup',\n trigger: '00*1*?*',\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'cancelOrder',\n title: 'Auto Cancel Ecommerce Orders',\n process: 'cancelOrder',\n trigger: '0*1/2?***',\n },\n];\n","import {\n AXMSchedulerJobManagementModuleConst,\n AXMSchedulerJobManagementSchedulerJobEntityModel,\n} from '@acorex/modules/scheduler-job-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { SCHEDULER_JOB } from './scheduler-job-management.mock.data';\n\n@Injectable()\nexport class AXPSchedulerJobDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMSchedulerJobManagementSchedulerJobEntityModel>(\n `${AXMSchedulerJobManagementModuleConst.moduleName}.${AXMSchedulerJobManagementModuleConst.schedulerJobEntity}`,\n SCHEDULER_JOB\n );\n }\n}\n","import { AXMTextTemplateManagementTemplateEntityModel } from '@acorex/modules/text-template-management';\nimport { AXPDataGenerator } from '@acorex/platform/common';\n\nexport const TEXT_TEMPLATE_CATEGORY = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'security',\n title: 'Security',\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'marketing',\n title: 'Marketing',\n },\n];\n\nexport const TEXT_TEMPLATES: AXMTextTemplateManagementTemplateEntityModel[] = [\n {\n id: AXPDataGenerator.uuid(),\n name: 'RestPassword',\n title: 'Rest Password',\n content: `\n<tr>\n <td>\n <p>Hi {{user_name}},</p>\n <p>We received a request to reset your password for your account. If you didn’t make this request, you can ignore this email. Otherwise, you can reset your password using the link below:</p>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"{{Reset Password Link}}\" style=\"background-color: #007bff; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Reset Password</a>\n </p>\n <p style=\"font-size: 12px; color: #666666;\">*This link will expire in {{Expiration Time}}*</p>\n <p>If the link above doesn’t work, copy and paste the following URL into your browser:</p>\n <p style=\"color: #007bff;\">{{Reset Password URL}}</p>\n <p>For your security, please make sure to keep your new password safe and avoid using it for other sites.</p>\n <p>If you have any questions, feel free to reach out to our support team at <a href=\"mailto:{{Support Email}}\">{{Support Email}}</a>.</p>\n <p>Best regards,<br>{{Company Name}} Support Team</p>\n </td>\n</tr>\n`,\n category: TEXT_TEMPLATE_CATEGORY[0],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'NewDevice',\n title: 'New Device Login',\n content: `\n <tr>\n <td>\n <p>Hi {{User's Name}},</p>\n <p>We detected a login to your account from a new device. If this was you, there’s nothing you need to do. If you didn’t sign in from a new device, please review your account for any unauthorized activity.</p>\n <p style=\"font-weight: bold;\">Device Information:</p>\n <ul>\n <li><strong>Device:</strong> {{Device Type}}</li>\n <li><strong>Location:</strong> {{Location, e.g., City, Country}}</li>\n <li><strong>Date & Time:</strong> {{Date and Time}}</li>\n <li><strong>IP Address:</strong> {{IP Address}}</li>\n </ul>\n <p>If you have any concerns, please secure your account by resetting your password and enabling two-factor authentication.</p>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"https://example.com/security-settings\" style=\"background-color: #007bff; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Review Account Security</a>\n </p>\n <p>Thank you for helping us keep your account safe.</p>\n <p>Best regards,<br>{{Your Company Name}} Security Team</p>\n </td>\n </tr>\n `,\n category: TEXT_TEMPLATE_CATEGORY[0],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n {\n id: AXPDataGenerator.uuid(),\n name: 'offer',\n title: 'Offer',\n content: `\n<tr>\n <td>\n <p>Hi {{user_name}},</p>\n <p>We're excited to bring you an exclusive offer! For a limited time, you can enjoy {{Discount Percentage}}% off on {{Product or Service Name}}. Don’t miss out on this amazing deal!</p>\n <p style=\"font-weight: bold;\">Offer Details:</p>\n <ul>\n <li><strong>Discount:</strong> {{Discount Percentage}}%</li>\n <li><strong>Valid Until:</strong> {{Expiration Date}}</li>\n <li><strong>Promo Code:</strong> <span style=\"color: #007bff;\">{{Promo Code}}</span></li>\n </ul>\n <p style=\"text-align: center; margin: 20px 0;\">\n <a href=\"{{Offer Link}}\" style=\"background-color: #ff9800; color: #ffffff; padding: 10px 20px; text-decoration: none; border-radius: 5px;\">Redeem Offer</a>\n </p>\n <p>Thank you for being a valued customer. We hope you enjoy this special offer!</p>\n <p>Best regards,<br>{{Company Name}} Team</p>\n </td>\n</tr>\n`,\n category: TEXT_TEMPLATE_CATEGORY[1],\n type: 'template',\n // templateVariables: [\n // {\n // name: 'user_name',\n // title: 'User Name',\n // type: 'string',\n // required: true,\n // },\n // ],\n },\n];\n","import {\n AXMTextTemplateManagementCategoryEntityModel,\n AXMTextTemplateManagementModuleConst,\n} from '@acorex/modules/text-template-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { TEXT_TEMPLATE_CATEGORY } from './text-template-management.mock.data';\n\n@Injectable()\nexport class AXPTextTemplateCategoryDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMTextTemplateManagementCategoryEntityModel>(\n `${AXMTextTemplateManagementModuleConst.moduleName}.${AXMTextTemplateManagementModuleConst.categoryEntity}`,\n TEXT_TEMPLATE_CATEGORY\n );\n }\n}\n","import {\n AXMTextTemplateManagementModuleConst,\n AXMTextTemplateManagementTemplateEntityModel,\n} from '@acorex/modules/text-template-management';\nimport { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { TEXT_TEMPLATES } from './text-template-management.mock.data';\n\n@Injectable()\nexport class AXPTextTemplateDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMTextTemplateManagementTemplateEntityModel>(\n `${AXMTextTemplateManagementModuleConst.moduleName}.${AXMTextTemplateManagementModuleConst.templateEntity}`,\n TEXT_TEMPLATES\n );\n }\n}\n","import { convertArrayToDataSource } from '@acorex/components/common';\nimport { AXPWidgetDataSource, AXPWidgetDataSourceProvider } from '@acorex/platform/layout/builder';\n\nexport class AXPMockWidgetDataSourceProvider implements AXPWidgetDataSourceProvider {\n async items(): Promise<AXPWidgetDataSource[]> {\n return [\n {\n name: 'mock.users',\n title: 'Users',\n columns: [],\n samples: [\n {\n id: '2',\n title: 'Alex Jakson',\n },\n {\n id: '3',\n title: 'Emma Smith',\n },\n ],\n source: () =>\n convertArrayToDataSource([\n {\n id: '1',\n title: 'Arash Oshnoudi',\n },\n {\n id: '2',\n title: 'Alex Smith',\n },\n {\n id: '3',\n title: 'Emma Jakson',\n },\n ]),\n },\n ];\n }\n}\n","import { AXPDataSeeder, AXPDexieEntityStorageService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMFormTemplateManagementCategoryEntityModel, AXMFormTemplateManagementModuleConst } from '@acorex/modules/form-template-management';\n\n\n@Injectable()\nexport class AXPFormTemplateCategoryDataSeeder implements AXPDataSeeder {\n private storageService = inject(AXPDexieEntityStorageService);\n\n async seed(): Promise<void> {\n await this.storageService.initial<AXMFormTemplateManagementCategoryEntityModel>(\n `${AXMFormTemplateManagementModuleConst.moduleName}.${AXMFormTemplateManagementModuleConst.categoryEntity}`,\n [\n {\n title: 'Risk Assessment'\n },\n {\n title: 'Servicing'\n },\n {\n title: 'Checklists'\n }\n ]);\n }\n}\n","import { AXP_WIDGET_DATASOURCE_PROVIDER } from '@acorex/platform/layout/builder';\nimport { NgModule } from '@angular/core';\nimport { AXPMockWidgetDataSourceProvider } from './datasource-provider.mock.service';\nimport { AXP_DATA_SEEDER_TOKEN } from '@acorex/platform/common';\nimport { AXPFormTemplateCategoryDataSeeder } from './category.seeder';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n\n {\n provide: AXP_WIDGET_DATASOURCE_PROVIDER,\n useClass: AXPMockWidgetDataSourceProvider,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPFormTemplateCategoryDataSeeder,\n multi: true,\n },\n ],\n})\nexport class AXCFormTemplateManagementMockModule { }\n","import { inject, Injectable } from \"@angular/core\";\nimport { AXPFileStorageCreateRequest, AXPFileStorageFindRequest, AXPFileStorageInfo, AXPFileStorageService, AXPFileStorageStatus, AXPFileStorageUpdateRequest } from \"@acorex/platform/common\";\n\nimport Dexie, { Table } from 'dexie';\nimport { AXFileService } from \"@acorex/core/file\";\n\n\nclass FileStorageDatabase extends Dexie {\n files!: Table<AXPFileStorageInfo & { binary: Blob }, string>;\n\n constructor() {\n super('FileStorageDatabase');\n this.version(1).stores({\n files: 'fileId,refId,refType,category,isPrimary,status',\n });\n }\n}\n\nconst db = new FileStorageDatabase();\n\n@Injectable()\nexport class AXCFileStorageService implements AXPFileStorageService {\n\n private fileService = inject(AXFileService);\n\n private async mapToFileStorageInfo(record: any): Promise<AXPFileStorageInfo> {\n if (!record) {\n throw new Error('Record not found');\n }\n\n const { binary, ...fileInfo } = record;\n\n const url = await this.fileService.blobToBase64(binary);\n\n return { ...fileInfo, url };\n }\n\n async save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo> {\n const fileId = crypto.randomUUID();\n\n const fileInfo: AXPFileStorageInfo = {\n fileId,\n refId: request.refId,\n refType: request.refType,\n category: request.category,\n size: request.file.size,\n mimeType: request.file.type,\n uploadedAt: new Date(),\n isPublic: request.metadata?.[\"isPublic\"] || true,\n isPrimary: request.isPrimary || false,\n status: AXPFileStorageStatus.Temporary, // Use enum\n };\n\n // Save the binary content along with metadata in Dexie\n await db.files.add({ ...fileInfo, binary: request.file });\n return fileInfo;\n }\n\n async commit(fileId: string): Promise<void> {\n const file = await db.files.get(fileId);\n\n if (!file) {\n throw new Error('File not found');\n }\n\n file.status = AXPFileStorageStatus.Committed; // Use enum\n await db.files.put(file);\n }\n\n async markForDeletion(fileId: string): Promise<void> {\n const file = await db.files.get(fileId);\n if (!file) {\n throw new Error('File not found');\n }\n file.status = AXPFileStorageStatus.PendingDeletion; // Use enum\n await db.files.put(file);\n }\n\n async update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo> {\n const file = await db.files.get(request.fileId);\n\n if (!file) {\n throw new Error('File not found');\n }\n\n const updatedFileInfo = {\n ...file,\n ...request.metadata,\n isPrimary: request.isPrimary !== undefined ? request.isPrimary : file.isPrimary,\n };\n\n await db.files.put(updatedFileInfo);\n return this.mapToFileStorageInfo(updatedFileInfo);\n }\n\n async find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]> {\n const files = await db.files.toArray();\n\n const filteredFiles = files.filter((file) => {\n return (\n (!request.refId || file.refId === request.refId) &&\n (!request.refType || file.refType === request.refType) &&\n (!request.category || file.category === request.category) &&\n (!request.isPrimary || file.isPrimary === request.isPrimary) &&\n (!request.isPublic || file.isPublic === request.isPublic) &&\n (!request.mimeType || file.mimeType === request.mimeType) &&\n (!request.uploadedAtRange ||\n (file.uploadedAt >= request.uploadedAtRange.from &&\n file.uploadedAt <= request.uploadedAtRange.to)) &&\n file.status === AXPFileStorageStatus.Committed // Use enum\n );\n });\n\n // Map all filtered files to `AXPFileStorageInfo`\n return Promise.all(filteredFiles.map((file) => this.mapToFileStorageInfo(file)));\n }\n\n async getInfo(fileId: string): Promise<AXPFileStorageInfo> {\n // Simulate a delay of 2 seconds (2000 milliseconds)\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n const file = await db.files.get(fileId);\n return this.mapToFileStorageInfo(file);\n }\n\n async remove(fileId: string): Promise<void> {\n await db.files.delete(fileId);\n }\n\n private async cleanupTemporaryFiles(): Promise<void> {\n const files = await db.files.toArray();\n\n const temporaryFiles = files.filter((file) => file.status === AXPFileStorageStatus.Temporary);\n\n for (const file of temporaryFiles) {\n await db.files.delete(file.fileId);\n }\n }\n\n private async cleanupMarkedFiles(gracePeriod: number): Promise<void> {\n const now = new Date();\n const files = await db.files.toArray();\n\n for (const file of files) {\n if (\n file.status === AXPFileStorageStatus.PendingDeletion &&\n now.getTime() - file.uploadedAt.getTime() > gracePeriod\n ) {\n await db.files.delete(file.fileId);\n }\n }\n }\n\n // Semi-background cleanup job\n constructor() {\n setInterval(() => {\n this.cleanupMarkedFiles(5 * 60 * 1000) // Grace period: 5 minutes in milliseconds\n .catch((error) => console.error('Error during cleanup:', error));\n this.cleanupTemporaryFiles() // Ensure temporary files are cleaned\n .catch((error) => console.error('Error during cleanup:', error));\n }, 5 * 60 * 1000); // Runs every 5 minutes\n }\n}\n","import { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXMNotificationService } from '@acorex/modules/notification-management';\nimport { AXPAuthModule } from '@acorex/platform/auth';\nimport { AXP_DATA_SEEDER_TOKEN, AXPDexieEntityStorageService, AXPEntityStorageService, AXPFileStorageService } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { AXPApplicationTemplateDataSeeder } from './application-management';\nimport { AXCModuleDesignerService } from './application-management/mock-module-designer.service';\nimport { AXCConversationMockModule } from './conversation/conversation.module';\nimport { MOCKStrategy } from './mock.strategy';\nimport { AXMMockNotificationService } from './notification-management/notification/notification.mock.service';\nimport { AXPGlobalVariablesDataSeeder } from './platform-management';\nimport { AXPSchedulerJobDataSeeder } from './scheduler-job-management';\nimport { AXPTextTemplateCategoryDataSeeder, AXPTextTemplateDataSeeder } from './text-template-management';\nimport { AXCFormTemplateManagementMockModule } from './form-template-management/form-template-management-mock.module';\nimport { AXCFileStorageService } from './platform-management/file-storage/file-storage-service';\n\n@NgModule({\n imports: [\n AXPAuthModule.forRoot({\n strategies: [MOCKStrategy],\n }),\n AXCFormTemplateManagementMockModule,\n AXCConversationMockModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n AXPDexieEntityStorageService,\n {\n provide: AXMNotificationService,\n useClass: AXMMockNotificationService,\n },\n\n {\n provide: AXPEntityStorageService,\n useClass: AXPDexieEntityStorageService,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPGlobalVariablesDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPTextTemplateCategoryDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPTextTemplateDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPApplicationTemplateDataSeeder,\n multi: true,\n },\n {\n provide: AXP_DATA_SEEDER_TOKEN,\n useClass: AXPSchedulerJobDataSeeder,\n multi: true,\n },\n {\n provide: AXPModuleDesignerService,\n useClass: AXCModuleDesignerService,\n },\n {\n provide: AXPFileStorageService,\n useClass: AXCFileStorageService,\n },\n ],\n})\nexport class AXCMockModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAEO,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACjE,IAAA,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;IACtF,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAE1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5D,IAAA,MAAM,MAAM,GAAG;QACb,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,qBAAqB;QACrB,qBAAqB;KACtB;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAE1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;IACzE,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,QAAA,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC7D,IAAA,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC;IAC5F,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAE1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC7D,IAAA,MAAM,MAAM,GAAG;QACb,qBAAqB;QACrB,iBAAiB;QACjB,yBAAyB;QACzB,yBAAyB;QACzB,YAAY;QACZ,wBAAwB;QACxB,yBAAyB;QACzB,cAAc;KACf;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3C,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC7D,IAAA,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;IAC7G,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3C,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AACK,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChE,IAAA,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,CAAC;IACrH,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3C,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;KACvC;AACH,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChE,IAAA,MAAM,MAAM,GAAG;QACb,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5C,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,IAAI,EAAE,IAAI;KACX;AACH,CAAC,CAAC;;MCzFW,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAa9D;AAXC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAA4B,uBAAuB,EAAE,YAAY,CAAC;AAClH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAuB,kBAAkB,EAAE,OAAO,CAAC;AAC9F,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAuB,kBAAkB,EAAE,QAAQ,CAAC;AAChG,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAwB,mBAAmB,EAAE,QAAQ,CAAC;AAClG,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAA2B,sBAAsB,EAAE,WAAW,CAAC;AAC9G,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAwB,sBAAsB,EAAE,QAAQ,CAAC;AACrG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAyB,oBAAoB,EAAE,UAAU,CAAC;QAExG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;8GAZxF,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAhC,gCAAgC,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C;;;MClBY,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,MAAM,GAAQ,MAAM,CAAC,kCAAkC,CAAC;AAExD,QAAA,IAAA,CAAA,aAAa,GAAG;AACxB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,OAAc;AACzB,aAAA;SACF;AAES,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,QAAgB,MAAyB;AAClE,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,wBAAA,KAAK,EAAE,QAAQ;AAChB,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AA4EH;AA1ES,IAAA,MAAM,SAAS,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC;;AAExD,IAAA,MAAM,SAAS,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC;;AAExD,IAAA,MAAM,UAAU,GAAA;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,SAAS,CAAC;;AAEzD,IAAA,MAAM,aAAa,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC;;AAGpE,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,SAAS,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAGjC,MAAM,eAAe,GAAA;AAErB,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,QAAgB,EAAE,OAAY;AAEjD,IAAA,MAAM,YAAY,CAAC,QAAgB;;IAInC,MAAM,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,SAAS,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,eAAe,CAAC,QAAgB;AAEtC,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,QAAgB;;IAInC,MAAM,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,UAAU,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,gBAAgB,CAAC,SAAiB;AAExC,IAAA,MAAM,aAAa,CAAC,OAAY;AAEhC,IAAA,MAAM,aAAa,CAAC,OAAY;AAEhC,IAAA,MAAM,aAAa,CAAC,SAAiB;;IAIrC,MAAM,cAAc,CAAC,QAAgB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,aAAa,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,mBAAmB,CAAC,YAAoB;AAE9C,IAAA,MAAM,gBAAgB,CAAC,OAAY;AAEnC,IAAA,MAAM,gBAAgB,CAAC,OAAY;AAEnC,IAAA,MAAM,gBAAgB,CAAC,YAAoB;8GAzGhC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACLM,MAAM,gBAAgB,GAAG,OAA2B;AACzD,IAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,IAAA,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AACpD,IAAA,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE;AACvC,IAAA,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,IAAI;AACd,CAAA,CAAC;AAEK,MAAM,mBAAmB,GAAG,OAAuB;AACxD,IAAA,OAAO,EAAE,CAAA,EAAG,gBAAgB,CAAC,IAAI,CAAC;QAChC,QAAQ;QACR,cAAc;QACd,4BAA4B;QAC5B,mCAAmC;QACnC,yBAAyB;QACzB,sBAAsB;QACtB,mBAAmB;QACnB,mCAAmC;AACpC,KAAA,CAAC,CAAE,CAAA;AACJ,IAAA,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,IAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACnC,IAAA,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5D,SAAS,EAAE,gBAAgB,EAAE;AAC9B,CAAA,CAAC;AAEK,MAAM,IAAI,GAAkB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAK;IACrE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,gBAAgB,EAAE,CAAC;IAE1F,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC;YAC3B,oBAAoB;YACpB,eAAe;YACf,cAAc;YACd,sBAAsB;YACtB,aAAa;SACd,CAAC;QACF,WAAW,EAAE,mBAAmB,EAAE;QAClC,WAAW;QACX,WAAW,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;KAC5C;AACH,CAAC,CAAC;;MCvCW,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAQ9D;AANC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC/B,GAAG,yBAAyB,CAAC,UAAU,CAAA,CAAA,EAAI,yBAAyB,CAAC,QAAQ,EAAE,EAC/E,IAAI,CACL;;8GAPQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACDK,MAAO,kBAAmB,SAAQ,kBAAkB,CAAA;AAC/C,IAAA,MAAM,cAAc,GAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,CAChD,GAAG,yBAAyB,CAAC,UAAU,CAAI,CAAA,EAAA,yBAAyB,CAAC,QAAQ,CAAA,CAAE,CAChF;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACpF,QAAA,OAAO,WAAW;;IAEX,MAAM,cAAc,CAAC,MAAc,EAAA;QAC1C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,QAAA,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D;;8GAXS,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAgGO,MAAM,YAAY,GAAG,OAAO;AACjC,IAAA,QAAQ,EAAE,gBAAgB,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AACpD,IAAA,SAAS,EAAE,gBAAgB,CAAC,SAAS,EAAE;AACvC,IAAA,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,EAAE;AACrC,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC5B,CAAA,CAAC;AAEK,MAAM,QAAQ,GAAiB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAK;AACxE,IAAA,MAAM,aAAa,GAAG;QACpB,oBAAoB;QACpB,qBAAqB;QACrB,+BAA+B;QAC/B,oBAAoB;QACpB,0BAA0B;QAC1B,2BAA2B;QAC3B,qBAAqB;QACrB,mCAAmC;QACnC,mBAAmB;QACnB,+BAA+B;KAChC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAElD,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAM,IAAA,CAAA;AACzD,QAAA,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9D,QAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE;QACjC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,QAAA,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC/B,QAAA,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACrC,QAAA,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;AACpB,QAAA,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO;AACvD,YAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;YAC3B,OAAO,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAM,IAAA,CAAA;AACzD,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE;YACjC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,YAAA,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC/B,YAAA,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACrC,YAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAChC,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACtC,YAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE;YACnC,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9C,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,IAAI,EAAE,YAAY,EAAE;YACpB,OAAO,EAAE,EAAE;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,UAAU,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACtC,QAAA,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE;QACnC,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;QAC/C,YAAY;AACZ,QAAA,IAAI,EAAE,YAAY,EAAE;AACpB,QAAA,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;KAC7D;AACH,CAAC,CAAC;;MClKW,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAQ9D;AANC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC/B,GAAG,yBAAyB,CAAC,UAAU,CAAA,CAAA,EAAI,yBAAyB,CAAC,WAAW,EAAE,EAClF,QAAQ,CACT;;8GAPQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAApB,oBAAoB,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC;;;ACMK,MAAO,qBAAsB,SAAQ,qBAAqB,CAAA;AADhE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AA6EnD;IA3EU,MAAM,SAAS,CAAC,OAAgC,EAAA;AACvD,QAAA,MAAM,WAAW,GAAe;AAC9B,YAAA,GAAG,OAAO;AACV,YAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE;YACjC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,YAAA,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC/B,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,gBAAgB,EAAE,EAAE;AACpB,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,cAAc,EAAE,CAAC;AACjB,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,IAAI,EAAE;AACJ,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE;AACtF,gBAAA,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAC,SAAS,EAAE;AACzE,gBAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAC,QAAQ,EAAE;gBACvE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI;AACjD,gBAAA,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE;AAC5D,aAAA;YACD,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,YAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;SAC5B;AAED,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACnB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACnD,YAAA,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE;AACrC,gBAAA,GAAG,OAAO;gBACV,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;AAC3C,aAAA,CAAC;;aACG;AACL,YAAA,MAAM,KAAK,CAAC,SAAS,CAAC,WAAkB,CAAC;;;AAG3C,QAAA,OAAO,MAAM;;IAGN,MAAM,IAAI,CAAC,OAAsC,EAAA;AACxD,QAAA;QACA,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAErD,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO;AAChC,YAAA,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,CAAC;AAExF,YAAA,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;;aAC5E;AACL,YAAA,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;AACpC,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;AAEF,YAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KACtD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAClE;YAED,IAAI,gBAAgB,EAAE;gBACpB,gBAAgB,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,KAC5D,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC;AACnB,sBAAE;AACE,wBAAA,GAAG,KAAK;AACR,wBAAA,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;AACvB,wBAAA,cAAc,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC;AACpF;sBACD,KAAK,CACV;gBACD,MAAM,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,CAAC;;iBACvD;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;;;AAIrD,QAAA,OAAO,MAAM;;8GA5EJ,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCgCY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAzB,yBAAyB,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,EArBzB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,iBAAiB;AAC3B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,qBAAqB;AAChC,aAAA;;;;;SAKF,EA9BC,OAAA,EAAA,CAAA,aAAa,CAAC,OAAO,CAAC;AACpB,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,QAAQ,EAAE,kBAAkB;AAC7B,qBAAA;AACF,iBAAA;aACF,CAAC,CAAA,EAAA,CAAA,CAAA;;2FAyBO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlCrC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa,CAAC,OAAO,CAAC;AACpB,4BAAA,QAAQ,EAAE;AACR,gCAAA;AACE,oCAAA,OAAO,EAAE,cAAc;AACvB,oCAAA,QAAQ,EAAE,kBAAkB;AAC7B,iCAAA;AACF,6BAAA;yBACF,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,iBAAiB;AAC3B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,oBAAoB;AAC9B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,qBAAqB;AAChC,yBAAA;;;;;AAKF,qBAAA;AACF,iBAAA;;;MCzBY,YAAY,CAAA;AACvB,IAAA,WAAA,GAAA;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,WAAW;;IAGpB,MAAM,MAAM,CAAC,WAAoC,EAAA;AAC/C,QAAA,IAAI;AACF,YAAA,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,EAAE;AACnE,gBAAA,MAAM,IAAI,GAAY;AACpB,oBAAA,EAAE,EAAE,sCAAsC;AAC1C,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,MAAM,EAAE,yCAAyC;iBAClD;gBACD,MAAM,WAAW,GAAG,cAAc;gBAClC,MAAM,YAAY,GAAG,eAAe;gBACpC,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;iBAC1C;;AAEH,YAAA,IAAI,WAAW,CAAC,QAAQ,IAAI,OAAO,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,EAAE;AACpE,gBAAA,MAAM,IAAI,GAAY;AACpB,oBAAA,EAAE,EAAE,sCAAsC;AAC1C,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,MAAM,EAAE,yCAAyC;iBAClD;gBACD,MAAM,WAAW,GAAG,cAAc;gBAClC,MAAM,YAAY,GAAG,eAAe;gBACpC,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;iBAC1C;;AAEH,YAAA,IAAI,WAAW,CAAC,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,KAAK,EAAE;AACnE,gBAAA,MAAM,IAAI,GAAY;AACpB,oBAAA,EAAE,EAAE,sCAAsC;AAC1C,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,KAAK,EAAE,aAAa;AACpB,oBAAA,MAAM,EAAE,yCAAyC;iBAClD;gBACD,MAAM,WAAW,GAAG,cAAc;gBAClC,MAAM,YAAY,GAAG,eAAe;gBACpC,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE;iBAC1C;;YAEH,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;aACf;;QACD,OAAO,KAAU,EAAE;YACnB,IAAI,KAAK,EAAE,OAAO;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;AAElD,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;;AAIvD,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;;IAGhC,MAAM,YAAY,CAAC,OAA0B,EAAA;QAC3C,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,IAAI,EAAE;AACJ,gBAAA,WAAW,EAAE,cAAc;AAC3B,gBAAA,YAAY,EAAE,eAAe;gBAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,aAAA;SACF;;8GA1EQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAZ,YAAY,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;MCAY,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAChD,IAAI,CAAA,IAAA,GAAG,eAAe;AA4B/B;AA1BC,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;AAC3D,QAAA,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA0B;QACpF,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;;IAGvC,MAAM,UAAU,CAAC,OAA0C,EAAA;AACzD,QAAA,MAAM,aAAa,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA0B;QAE5F,IAAI,CAAC,OAAO,EAAE;YACZ;iBACG,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM;AAC7B,iBAAA,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;;aACnG;AACL,YAAA,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;AAC3B,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC5D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;;;;IAK5E,MAAM,MAAM,CAAC,OAA6B,EAAA;AACxC,QAAA,MAAM,YAAY,GAAG,OAAO,IAAI,oBAAoB,EAAE;AACtD,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;;8GA5BnD,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;2FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;AAiCD,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AAC1C,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC;AACzD,MAAM,MAAM,GAAG,CAAC,yBAAyB,EAAE,8BAA8B,EAAE,6BAA6B,CAAC;AACzG,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;AACvC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC;AAChD,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAE3C,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAEhF,SAAS,oBAAoB,GAAA;IAC3B,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,KAAK,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;AACnC,QAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAA2B;AAClE,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAwB;AACzD,YAAA,IAAI,EAAE,EAAE;AACT,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;YAC3B,IAAI,EAAE,CAAG,EAAA,gBAAgB,CAAC,SAAS,EAAE,CAAA,CAAA,EAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAE,CAAA;AACtE,YAAA,KAAK,EAAE,2BAA2B;AACnC,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAA4B;AACtE,YAAA,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAA2B;AACpE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE,gBAAgB,CAAC,OAAO,EAAE;AACrC,SAAA;AACD,QAAA,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AAC3D,QAAA,UAAU,EAAE,eAAe;KAC5B;AACH;;AC/EA,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;AAClD,MAAM,IAAI,GAAG;IACX,CAAC,MAAM,EAAE,QAAQ,CAAC;IAClB,CAAC,UAAU,EAAE,SAAS,CAAC;IACvB,CAAC,SAAS,EAAE,UAAU,CAAC;IACvB,CAAC,aAAa,EAAE,UAAU,CAAC;CAC5B;AAEM,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,KAAI;IAC3E,OAAO;AACL,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACd,QAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,QAAA,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACtB;AACH,CAAC,CAAC;;MCbW,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAK9D;AAHC,IAAA,MAAM,IAAI,GAAA;QACR,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;;8GAJ5D,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACFM,MAAM,aAAa,GAAG;AAC3B,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,KAAK,EAAE,8BAA8B;AACrC,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,OAAO,EAAE,WAAW;AACrB,KAAA;CACF;;MCRY,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAQ9D;AANC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC/B,GAAG,oCAAoC,CAAC,UAAU,CAAA,CAAA,EAAI,oCAAoC,CAAC,kBAAkB,EAAE,EAC/G,aAAa,CACd;;8GAPQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACLM,MAAM,sBAAsB,GAAG;AACpC,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,WAAW;AACnB,KAAA;CACF;AAEM,MAAM,cAAc,GAAmD;AAC5E,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,OAAO,EAAE;;;;;;;;;;;;;;;;AAgBZ,CAAA;AACG,QAAA,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,EAAE,UAAU;;;;;;;;;AASjB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;AAoBR,IAAA,CAAA;AACD,QAAA,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,EAAE,UAAU;;;;;;;;;AASjB,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,gBAAgB,CAAC,IAAI,EAAE;AAC3B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE;;;;;;;;;;;;;;;;;;AAkBZ,CAAA;AACG,QAAA,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,EAAE,UAAU;;;;;;;;;AASjB,KAAA;CACF;;MC9GY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAQ9D;AANC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC/B,GAAG,oCAAoC,CAAC,UAAU,CAAA,CAAA,EAAI,oCAAoC,CAAC,cAAc,EAAE,EAC3G,sBAAsB,CACvB;;8GAPQ,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C;;;MCCY,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAQ9D;AANC,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC/B,GAAG,oCAAoC,CAAC,UAAU,CAAA,CAAA,EAAI,oCAAoC,CAAC,cAAc,EAAE,EAC3G,cAAc,CACf;;8GAPQ,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;MCLY,+BAA+B,CAAA;AAC1C,IAAA,MAAM,KAAK,GAAA;QACT,OAAO;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,KAAK,EAAE,aAAa;AACrB,qBAAA;AACD,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,KAAK,EAAE,YAAY;AACpB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,EAAE,MACN,wBAAwB,CAAC;AACvB,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,KAAK,EAAE,gBAAgB;AACxB,qBAAA;AACD,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,KAAK,EAAE,YAAY;AACpB,qBAAA;AACD,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,KAAK,EAAE,aAAa;AACrB,qBAAA;iBACF,CAAC;AACL,aAAA;SACF;;AAEJ;;MChCY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAiBhE;AAfG,IAAA,MAAM,IAAI,GAAA;AACN,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,CAAA,EAAG,oCAAoC,CAAC,UAAU,CAAI,CAAA,EAAA,oCAAoC,CAAC,cAAc,EAAE,EAC3G;AACI,YAAA;AACI,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,KAAK,EAAE;AACV,aAAA;AACD,YAAA;AACI,gBAAA,KAAK,EAAE;AACV;AACJ,SAAA,CAAC;;8GAhBD,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C;;;MCmBY,mCAAmC,CAAA;8GAAnC,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnC,mCAAmC,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mCAAmC,EAdnC,SAAA,EAAA;AAET,YAAA;AACE,gBAAA,OAAO,EAAE,8BAA8B;AACvC,gBAAA,QAAQ,EAAE,+BAA+B;AACzC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,iCAAiC;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,CAAA,CAAA;;2FAEU,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAlB/C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AAET,wBAAA;AACE,4BAAA,OAAO,EAAE,8BAA8B;AACvC,4BAAA,QAAQ,EAAE,+BAA+B;AACzC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,iCAAiC;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA;AACF,iBAAA;;;AChBD,MAAM,mBAAoB,SAAQ,KAAK,CAAA;AAGnC,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,qBAAqB,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACnB,YAAA,KAAK,EAAE,gDAAgD;AAC1D,SAAA,CAAC;;AAET;AAED,MAAM,EAAE,GAAG,IAAI,mBAAmB,EAAE;MAGvB,qBAAqB,CAAA;IAItB,MAAM,oBAAoB,CAAC,MAAW,EAAA;QAC1C,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;;QAGvC,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM;QAEtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;AAEvD,QAAA,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE;;IAG/B,MAAM,IAAI,CAAC,OAAoC,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE;AAElC,QAAA,MAAM,QAAQ,GAAuB;YACjC,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;AACvB,YAAA,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YAC3B,UAAU,EAAE,IAAI,IAAI,EAAE;YACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,IAAI;AAChD,YAAA,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;AACrC,YAAA,MAAM,EAAE,oBAAoB,CAAC,SAAS;SACzC;;AAGD,QAAA,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,OAAO,QAAQ;;IAGnB,MAAM,MAAM,CAAC,MAAc,EAAA;QACvB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAEvC,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;;QAGrC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC;QAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;IAG5B,MAAM,eAAe,CAAC,MAAc,EAAA;QAChC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;;QAErC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,eAAe,CAAC;QACnD,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;IAG5B,MAAM,MAAM,CAAC,OAAoC,EAAA;AAC7C,QAAA,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAE/C,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC;;AAGrC,QAAA,MAAM,eAAe,GAAG;AACpB,YAAA,GAAG,IAAI;YACP,GAAG,OAAO,CAAC,QAAQ;AACnB,YAAA,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;SAClF;QAED,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;;IAGrD,MAAM,IAAI,CAAC,OAAkC,EAAA;QACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;QAEtC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACxC,YAAA,QACI,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;AAC/C,iBAAC,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACtD,iBAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;AACzD,iBAAC,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC;AAC5D,iBAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;AACzD,iBAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBACxD,CAAC,OAAO,CAAC,eAAe;qBACpB,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI;wBAC5C,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC,SAAS;;AAEtD,SAAC,CAAC;;QAGF,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;;IAGpF,MAAM,OAAO,CAAC,MAAc,EAAA;;AAExB,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;;IAG1C,MAAM,MAAM,CAAC,MAAc,EAAA;QACvB,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGzB,IAAA,MAAM,qBAAqB,GAAA;QAC/B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;AAEtC,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC,SAAS,CAAC;AAE7F,QAAA,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;YAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;;IAIlC,MAAM,kBAAkB,CAAC,WAAmB,EAAA;AAChD,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QACtB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;AAEtC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,IACI,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC,eAAe;AACpD,gBAAA,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,WAAW,EACzD;gBACE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;;;;AAM9C,IAAA,WAAA,GAAA;AAnIQ,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;QAoIvC,WAAW,CAAC,MAAK;YACb,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,qBAAqB,EAAE;AACvB,iBAAA,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;SACvE,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;;8GA3Ib,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCoDY,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,gCAnDtB,mCAAmC;YACnC,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAkDhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EA9Cb,SAAA,EAAA;YACT,4BAA4B;AAC5B,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE,0BAA0B;AACrC,aAAA;AAED,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,4BAA4B;AACvC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,4BAA4B;AACtC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,iCAAiC;AAC3C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,yBAAyB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,gCAAgC;AAC1C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,yBAAyB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,qBAAqB;AAChC,aAAA;SACF,EApDC,OAAA,EAAA,CAAA,aAAa,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,CAAC,YAAY,CAAC;aAC3B,CAAC;YACF,mCAAmC;YACnC,yBAAyB,CAAA,EAAA,CAAA,CAAA;;2FAkDhB,aAAa,EAAA,UAAA,EAAA,CAAA;kBAxDzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,aAAa,CAAC,OAAO,CAAC;4BACpB,UAAU,EAAE,CAAC,YAAY,CAAC;yBAC3B,CAAC;wBACF,mCAAmC;wBACnC,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;wBACT,4BAA4B;AAC5B,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,QAAQ,EAAE,0BAA0B;AACrC,yBAAA;AAED,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,4BAA4B;AACvC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,4BAA4B;AACtC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,iCAAiC;AAC3C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,yBAAyB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,gCAAgC;AAC1C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,yBAAyB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,qBAAqB;AAChC,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACvED;;AAEG;;;;"}
@@ -0,0 +1,18 @@
1
+ import { AXPFileStorageCreateRequest, AXPFileStorageFindRequest, AXPFileStorageInfo, AXPFileStorageService, AXPFileStorageUpdateRequest } from "@acorex/platform/common";
2
+ import * as i0 from "@angular/core";
3
+ export declare class AXCFileStorageService implements AXPFileStorageService {
4
+ private fileService;
5
+ private mapToFileStorageInfo;
6
+ save(request: AXPFileStorageCreateRequest): Promise<AXPFileStorageInfo>;
7
+ commit(fileId: string): Promise<void>;
8
+ markForDeletion(fileId: string): Promise<void>;
9
+ update(request: AXPFileStorageUpdateRequest): Promise<AXPFileStorageInfo>;
10
+ find(request: AXPFileStorageFindRequest): Promise<AXPFileStorageInfo[]>;
11
+ getInfo(fileId: string): Promise<AXPFileStorageInfo>;
12
+ remove(fileId: string): Promise<void>;
13
+ private cleanupTemporaryFiles;
14
+ private cleanupMarkedFiles;
15
+ constructor();
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXCFileStorageService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXCFileStorageService>;
18
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/connectivity",
3
- "version": "19.1.3",
3
+ "version": "19.1.5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.0.0",
6
6
  "@angular/core": "^19.0.0"
@@ -1,14 +0,0 @@
1
- import { AXUploadRequest } from '@acorex/components/uploader';
2
- import { Observable } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export declare class AXPFileManagementServiceMock {
5
- private db;
6
- constructor();
7
- upload(requests: AXUploadRequest[]): Promise<PromiseSettledResult<unknown>[]>;
8
- delete(fileId: string): Promise<any>;
9
- get(fileId: string, name: string): Observable<any>;
10
- list(): Promise<any>;
11
- setMetadata(fileId: string, metadata: any): Promise<any>;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPFileManagementServiceMock, never>;
13
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPFileManagementServiceMock>;
14
- }