{"version":3,"file":"kif-lib-services.mjs","sources":["../../../projects/kif-lib/services/graphql.component.ts","../../../projects/kif-lib/services/interfaces/auth-config.interface.ts","../../../projects/kif-lib/services/auth/auth.service.ts","../../../projects/kif-lib/services/auth/session-expired.service.ts","../../../projects/kif-lib/services/auth/auth-interceptor.ts","../../../projects/kif-lib/services/graphql.module.ts","../../../projects/kif-lib/services/enum/error-type-code-enumeration.enum.ts","../../../projects/kif-lib/services/enum/error-kind-code-enumeration.enum.ts","../../../projects/kif-lib/services/public-api.ts","../../../projects/kif-lib/services/kif-lib-services.ts"],"sourcesContent":["import {  Injectable } from \"@angular/core\";\nimport { Apollo, gql } from \"apollo-angular\";\nimport { catchError, of } from \"rxjs\";\nimport { ApolloQueryResult } from \"./models\";\n@Injectable({\n    providedIn: 'root' \n})\nexport class GraphQLComponent {\n    \n    constructor(public apollo: Apollo) {}\n\n    // READ\n    read(query: string, variables: any, fetchPolicy?: any, newVersion:boolean=false) {            \n        const request = this.apollo.query({\n            query: gql`${query}`,\n            variables: variables,\n            fetchPolicy: fetchPolicy\n        });\n        return !newVersion ? request : request.pipe(catchError((err:any)=> this.getCatchError(err) ));      \n    }\n\n    // UPDATE\n    update(query: string, variables:any, newVersion:boolean=false){\n        const request =  this.apollo\n            .mutate({\n                mutation: gql`${query}`,\n                variables\n            });\n        return !newVersion ? request : request.pipe(catchError((err:any)=> this.getCatchError(err) ));\n    }\n\n    // WATCH\n    watchQuery(query: string, variables: any) {\n        return this.apollo\n            .watchQuery({\n                query: gql`${query}`,\n                variables: variables\n            });\n    }\n\n    resetCacheApollo() {\n        this.apollo.client.resetStore();\n    }\n\n    // DEPRECAR METODOS - create & delete\n    create(query: any, variables?: any, newVersion:boolean=false) {\n        const request = this.apollo\n            .mutate({\n                mutation: gql`${query}`,\n                variables\n            });\n        return !newVersion ? request : request.pipe(catchError((err:any)=> this.getCatchError(err) ));\n    }\n    delete(query: string, variables:any, newVersion:boolean=false){\n        const request = this.apollo\n            .mutate({\n                mutation: gql`${query}`,\n                variables\n            });\n        return !newVersion ? request : request.pipe(catchError((err:any)=> this.getCatchError(err) ));\n    }\n\n    private getCatchError(err:any){\n        return of( this.standardizeError(err) ) \n    }\n\nprivate standardizeError<T>(err: any): ApolloQueryResult<T> {\n    const standardizedError: ApolloQueryResult<T> = {\n        data: undefined,\n        loading: false,\n        networkStatus: 8,\n        error: undefined\n    };\n\n    // 1. GraphQL errors directos (cuando errorPolicy: 'all' o vienen en el ApolloError)\n    if (err.graphQLErrors && err.graphQLErrors.length > 0) {\n        const firstGraphQLError = err.graphQLErrors[0];\n        standardizedError.error = {\n            errorMessage: firstGraphQLError.message,\n            code: firstGraphQLError.extensions?.code,\n            locations: firstGraphQLError.locations,\n            stacktrace: firstGraphQLError.extensions?.stacktrace,\n        };\n        return standardizedError;\n    }\n\n    // 2. En v13, los GraphQL errors del servidor suelen llegar dentro de networkError.error.errors\n    //    cuando el servidor responde con HTTP 4xx/5xx + body { errors: [...] }\n    if (err.networkError) {\n        const serverErrors = err.networkError?.error?.errors      // HttpErrorResponse con body JSON\n                         ?? err.networkError?.result?.errors;     // ServerError (apollo parse)\n\n        if (serverErrors && serverErrors.length > 0) {\n            const firstError = serverErrors[0];\n            standardizedError.error = {\n                errorMessage: firstError.message,\n                code: firstError.extensions?.code,\n                locations: firstError.locations,\n                stacktrace: firstError.extensions?.stacktrace,\n            };\n            return standardizedError;\n        }\n\n        // networkError sin graphQL errors dentro (timeout, CORS, 500 sin body, etc.)\n        standardizedError.error = {\n            errorMessage: err.networkError.message ?? 'Error de red.',\n            stacktrace: [err.networkError.message],\n        };\n        return standardizedError;\n    }\n\n    // 3. ApolloError con mensaje propio (protocolErrors, clientErrors)\n    if (err.message) {\n        standardizedError.error = {\n            errorMessage: err.message,\n        };\n        return standardizedError;\n    }\n\n    // 4. Fallback\n    standardizedError.error = {\n        errorMessage: 'Error desconocido.'\n    };\n\n    return standardizedError;\n}\n}","import { InjectionToken } from '@angular/core';\n\nexport interface IAuthConfig {\n    refresh_url?: string;\n    /**\n     * Clave del token en la respuesta del endpoint de refresh.\n     * AWS Cognito retorna 'access_token' por defecto.\n     */\n    refresh_token_key?: string;\n    /**\n     * Función provista por el consumidor para renovar el token silenciosamente.\n     * Debe retornar el nuevo access token o null si la renovación falló.\n     * Ejemplo con Amplify: () => fetchAuthSession({ forceRefresh: true })\n     *   .then(s => s.tokens?.accessToken?.toString() ?? null)\n     */\n    onRefresh?: () => Promise<string | null>;\n}\n\nexport const AUTH_CONFIG = new InjectionToken<IAuthConfig>('AUTH_CONFIG');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, catchError, map, Observable, tap, throwError } from 'rxjs';\nimport { IRoleActive } from '../interfaces/role-active.interface';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { AUTH_CONFIG, IAuthConfig } from '../interfaces/auth-config.interface';\n\n@Injectable()\nexport class AuthService {\n    private readonly TOKEN_KEY = 'authToken';\n    private readonly TOKEN = 'token';\n    private readonly REFRESH_TOKEN_KEY = 'refreshToken';\n    private readonly ROLE_ACTIVE_KEY = 'role-active';\n    private readonly USER_KEY = 'user';\n    private readonly USER_CAPABILITIES_KEY = 'userCapabilities';\n    private readonly CIA_KEY = 'cia';\n\n    private tokenSubject = new BehaviorSubject<string | null>(this.getToken());\n\n    /** Indica si hay un refresh en curso para serializar peticiones concurrentes */\n    isRefreshing = false;\n    /** Emite el nuevo token cuando el refresh finaliza; null mientras está en curso */\n    refreshTokenSubject = new BehaviorSubject<string | null>(null);\n\n    private http: HttpClient;\n\n    constructor(\n        handler: HttpBackend,\n        @Optional() @Inject(AUTH_CONFIG) private authConfig: IAuthConfig | null,\n    ) {\n        this.http = new HttpClient(handler);\n    }\n\n    // ── Token de acceso ──────────────────────────────────────────────────────\n\n    setToken(token: string): void {\n        localStorage.setItem(this.TOKEN_KEY, token);\n        this.tokenSubject.next(token);\n    }\n\n    getToken(): string | null {\n        return localStorage.getItem(this.TOKEN_KEY);\n    }\n\n    clearToken(): void {\n        localStorage.removeItem(this.TOKEN_KEY);\n        this.tokenSubject.next(null);\n    }\n\n    getTokenObservable(): Observable<string | null> {\n        return this.tokenSubject.asObservable();\n    }\n\n    isLoggedIn(): boolean {\n        return !!this.getToken();\n    }\n\n    /**\n     * Parsea el JWT y comprueba si el claim `exp` ya venció.\n     * Retorna true si no hay token, si no es un JWT válido o si expiró.\n     */\n    isTokenExpired(): boolean {\n        const token = this.getToken();\n        if (!token) return true;\n        try {\n            const payload = JSON.parse(atob(token.split('.')[1]));\n            return payload.exp * 1000 < Date.now();\n        } catch {\n            return true;\n        }\n    }\n\n    // ── Refresh token ────────────────────────────────────────────────────────\n\n    setRefreshToken(token: string): void {\n        localStorage.setItem(this.REFRESH_TOKEN_KEY, token);\n    }\n\n    getRefreshToken(): string | null {\n        return localStorage.getItem(this.REFRESH_TOKEN_KEY);\n    }\n\n    clearRefreshToken(): void {\n        localStorage.removeItem(this.REFRESH_TOKEN_KEY);\n    }\n\n    refreshAccessToken(): Observable<string> {\n        const refreshUrl = this.authConfig?.refresh_url;\n        const tokenKey = this.authConfig?.refresh_token_key ?? 'access_token';\n        const refreshToken = this.getRefreshToken();\n\n        if (!refreshUrl || !refreshToken) {\n            return throwError(() => new Error('AUTH_CONFIG.refresh_url o refreshToken no configurados'));\n        }\n\n        return this.http.post<Record<string, string>>(refreshUrl, { refreshToken }).pipe(\n            tap(response => {\n                const newToken = response[tokenKey];\n                this.setToken(newToken);\n                this.refreshTokenSubject.next(newToken);\n            }),\n            map(response => response[tokenKey]),\n            catchError(error => {\n                this.clearToken();\n                this.clearRefreshToken();\n                return throwError(() => error);\n            })\n        );\n    }\n\n    // ── Rol activo ───────────────────────────────────────────────────────────\n\n    removeActiveRole() {\n        localStorage.removeItem(this.ROLE_ACTIVE_KEY);\n    }\n\n    setActiveRole(roleCode: IRoleActive) {\n        localStorage.setItem(this.ROLE_ACTIVE_KEY, JSON.stringify(roleCode));\n    }\n\n    getActiveRole(): IRoleActive|null {\n        const sessionRoleActive = localStorage.getItem(this.ROLE_ACTIVE_KEY) || ''; \n        return sessionRoleActive ? JSON.parse(sessionRoleActive) : null;\n    }\n\n    logout(): void {\n        localStorage.removeItem(this.TOKEN_KEY);\n        localStorage.removeItem(this.REFRESH_TOKEN_KEY);\n        localStorage.removeItem(this.ROLE_ACTIVE_KEY);\n        localStorage.removeItem(this.USER_KEY);\n        localStorage.removeItem(this.USER_CAPABILITIES_KEY);\n        localStorage.removeItem(this.CIA_KEY);\n        localStorage.removeItem(this.TOKEN);\n\n        Object.keys(localStorage)\n            .filter(key => key.startsWith('CognitoIdentityServiceProvider'))\n            .forEach(key => localStorage.removeItem(key));\n\n        this.tokenSubject.next(null);\n        this.isRefreshing = false;\n        this.refreshTokenSubject.next(null);\n    }\n\n    // ── Subdominio ───────────────────────────────────────────────────────────\n\n    getSubDomain(): string {\n        return window.location.hostname.split('.')[0];\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class SessionExpiredService {\n    private readonly expired$ = new Subject<void>();\n    private hasEmitted = false;\n\n    readonly sessionExpired: Observable<void> = this.expired$.asObservable();\n\n    emit(): void {\n        if (this.hasEmitted) return;\n        this.hasEmitted = true;\n        this.expired$.next();\n    }\n\n    reset(): void {\n        this.hasEmitted = false;\n    }\n}\n","import { HttpHandlerFn, HttpInterceptorFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { from, throwError } from 'rxjs';\nimport { catchError, filter, switchMap, take } from 'rxjs/operators';\nimport { AUTH_CONFIG } from '../interfaces/auth-config.interface';\nimport { AuthService } from './auth.service';\nimport { SessionExpiredService } from './session-expired.service';\n\nexport const AuthInterceptor: HttpInterceptorFn = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n    const authService = inject(AuthService);\n    const sessionExpired = inject(SessionExpiredService);\n    const authConfig = inject(AUTH_CONFIG, { optional: true });\n\n    const attachHeaders = (token: string | null) => {\n        const activeRole = authService.getActiveRole();\n        return req.clone({\n            setHeaders: {\n                authorization: token ?? '',\n                'active-role': activeRole?.code ?? ''\n            }\n        });\n    };\n\n    const refreshAndRetry = () => {\n        if (authService.isRefreshing) {\n            return authService.refreshTokenSubject.pipe(\n                filter((token): token is string => token !== null),\n                take(1),\n                switchMap(token => next(attachHeaders(token)))\n            );\n        }\n\n        authService.isRefreshing = true;\n        authService.refreshTokenSubject.next(null);\n\n        const refresh$ = authConfig?.onRefresh\n            ? from(authConfig.onRefresh())\n            : throwError(() => new Error('onRefresh no configurado'));\n\n        return refresh$.pipe(\n            switchMap(newToken => {\n                if (!newToken) throw new Error('No token after refresh');\n                authService.setToken(newToken);\n                authService.isRefreshing = false;\n                authService.refreshTokenSubject.next(newToken);\n                return next(attachHeaders(newToken));\n            }),\n            catchError(error => {\n                authService.isRefreshing = false;\n                sessionExpired.emit();\n                return throwError(() => error);\n            })\n        );\n    };\n\n    const token = authService.getToken();\n    const tokenExpired = token && authService.isTokenExpired();\n\n    if (tokenExpired) {\n        return refreshAndRetry();\n    }\n\n    return next(attachHeaders(token)).pipe(\n        catchError(error => {\n            if (error.status === 401) {\n                return refreshAndRetry();\n            }\n            return throwError(() => error);\n        })\n    );\n};\n","import { ModuleWithProviders, NgModule, inject } from '@angular/core';\nimport { provideApollo } from 'apollo-angular';\nimport { HttpLink } from 'apollo-angular/http';\nimport { InMemoryCache } from '@apollo/client/core';\nimport { provideHttpClient, withInterceptors } from '@angular/common/http';\n// @ts-ignore - setContext and onError are still the recommended approach in Apollo Client v4 for Angular\nimport { setContext } from '@apollo/client/link/context';\n// @ts-ignore - setContext and onError are still the recommended approach in Apollo Client v4 for Angular\nimport { onError } from '@apollo/client/link/error';\nimport { Observable } from '@apollo/client/utilities';\nimport { catchError, tap, throwError } from 'rxjs';\nimport { AuthService } from './auth/auth.service';\nimport { AuthInterceptor } from './auth/auth-interceptor';\nimport { SessionExpiredService } from './auth/session-expired.service';\nimport { IDomainKeys } from './interfaces/domain-key.interface';\nimport { AUTH_CONFIG, IAuthConfig } from './interfaces/auth-config.interface';\n\n@NgModule({\n    declarations: [],\n    providers: [\n        provideHttpClient(\n            withInterceptors([AuthInterceptor])\n        ),\n        AuthService,\n        SessionExpiredService\n    ],\n})\nexport class GraphQLModule {\n    static forRoot(environment: any): ModuleWithProviders<GraphQLModule> {\n        const currentSubdomain = window.location.hostname.includes('.')\n            ? window.location.hostname.split('.')[0]\n            : window.location.hostname;\n        const findSubdomine = environment.domainKeys.find(\n            (apiKey: IDomainKeys) => apiKey.domain === currentSubdomain\n        );\n\n        const authLink = setContext((_, { headers }): any => ({\n            headers: {\n                ...headers,\n                ...(findSubdomine ? { 'api-key': findSubdomine.key } : {})\n            }\n        }));\n\n        return {\n            ngModule: GraphQLModule,\n            providers: [\n                {\n                    provide: AUTH_CONFIG,\n                    useValue: {\n                        refresh_url: environment.refresh_url,\n                        refresh_token_key: environment.refresh_token_key ?? 'access_token',\n                        onRefresh: environment.onRefresh\n                    } as IAuthConfig\n                },\n                provideApollo(() => {\n                    const httpLink = inject(HttpLink);\n                    const authService = inject(AuthService);\n                    const sessionExpiredService = inject(SessionExpiredService);\n\n                    const httpLinkHandler = httpLink.create({\n                        uri: () => authService.getToken()\n                            ? environment.base_url_private\n                            : environment.base_url_public,\n                    });\n\n                    const errorLink = onError(({ graphQLErrors, forward, operation }: any) => {\n                        const isUnauthenticated = graphQLErrors?.some(\n                            (e: any) => e.extensions?.['code'] === 'UNAUTHENTICATED'\n                        );\n\n                        if (!isUnauthenticated) return;\n\n                        if (!authService.getRefreshToken()) {\n                            sessionExpiredService.emit();\n                            return;\n                        }\n\n                        // Marcar refresh en curso y notificar\n                        authService.isRefreshing = true;\n\n                        // Si ya hay un refresh en curso, esperar el token\n                        const token$ = authService.refreshAccessToken().pipe(\n                            tap(() => {\n                                authService.isRefreshing = false;\n                                authService.refreshTokenSubject.next(authService.getToken());\n                            }),\n                            catchError((error: any) => {\n                                authService.isRefreshing = false;\n                                sessionExpiredService.emit();\n                                return throwError(() => error);\n                            })\n                        );\n\n                        return new Observable<any>(observer => {\n                            token$.subscribe({\n                                next: () => forward(operation).subscribe({\n                                    next: (v: any) => observer.next(v),\n                                    error: (e: any) => observer.error(e),\n                                    complete: () => observer.complete(),\n                                }),\n                                error: (e: any) => {\n                                    sessionExpiredService.emit();\n                                    observer.error(e);\n                                },\n                            });\n                        });\n                    });\n\n                    return {\n                        cache: new InMemoryCache(),\n                        link: errorLink.concat(authLink.concat(httpLinkHandler)),\n                    };\n                })\n            ]\n        };\n    }\n}","export enum ErrorTypeCodeEnumeration {\n    MICROSERVICE_CONNECTION_ERROR=\"MICROSERVICE_CONNECTION_ERROR\",\n    DATABASE_CONNECTION_ERROR=\"DATABASE_CONNECTION_ERROR\",\n    INSERTION_FAILED=\"INSERTION_FAILED\",\n    UPDATE_FAILED=\"UPDATE_FAILED\",\n    DELETED_FAILED=\"DELETED_FAILED\",\n    NOT_FOUND=\"NOT_FOUND\",\n    PARTIALLY_FOUND=\"PARTIALLY_FOUND\",\n    UNAUTHORIZED=\"UNAUTHORIZED\",\n    FORBIDDEN=\"FORBIDDEN\",\n    INVALID_FILTERS=\"INVALID_FILTERS\",\n    HANDLED_ERROR=\"HANDLED_ERROR\",\n    UNKNOWN_ERROR=\"UNKNOWN_ERROR\"\n}\n","export enum ErrorKindCodeEnumeration {\n    ERROR=\"ERROR\",\n    WARNING=\"WARNING\",\n    SUCCESS=\"SUCCESS\"\n}\n","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from './graphql.component';\nexport * from './graphql.module';\nexport * from './enum/index';\nexport * from './models/index'\nexport * from './auth/auth.service'\nexport * from './interfaces/role-active.interface'\nexport * from './interfaces/auth-config.interface'\nexport * from './auth/session-expired.service'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["catchError"],"mappings":"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"}