@acontplus/ng-auth 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"acontplus-ng-auth.mjs","sources":["../tmp-esm2022/lib/repositories/token.repository.js","../tmp-esm2022/lib/services/auth-token.service.js","../tmp-esm2022/lib/guards/auth.guard.js","../tmp-esm2022/lib/services/csrf.service.js","../tmp-esm2022/lib/domain/models/user.js","../tmp-esm2022/lib/domain/models/index.js","../tmp-esm2022/lib/domain/repositories/auth.repository.js","../tmp-esm2022/lib/domain/repositories/index.js","../tmp-esm2022/lib/domain/index.js","../tmp-esm2022/lib/data/repositories/auth-http.repository.js","../tmp-esm2022/lib/data/repositories/index.js","../tmp-esm2022/lib/data/index.js","../tmp-esm2022/lib/ui/stores/auth.store.js","../tmp-esm2022/lib/application/use-cases/login.use-case.js","../tmp-esm2022/lib/application/use-cases/register.use-case.js","../tmp-esm2022/lib/application/use-cases/refresh-token.use-case.js","../tmp-esm2022/lib/application/use-cases/logout.use-case.js","../tmp-esm2022/lib/application/use-cases/index.js","../tmp-esm2022/lib/application/index.js","../tmp-esm2022/lib/ui/stores/index.js","../tmp-esm2022/lib/ui/login/login.component.js","../tmp-esm2022/lib/ui/login/index.js","../tmp-esm2022/lib/ui/index.js","../tmp-esm2022/lib/providers/auth.providers.js","../tmp-esm2022/lib/providers/index.js","../tmp-esm2022/acontplus-ng-auth.js"],"sourcesContent":["import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { jwtDecode } from 'jwt-decode';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class TokenRepository {\n environment = inject(ENVIRONMENT);\n platformId = inject(PLATFORM_ID);\n saveTokens(tokens, rememberMe = false) {\n if (isPlatformBrowser(this.platformId)) {\n this.setToken(tokens.token, rememberMe);\n this.setRefreshToken(tokens.refreshToken, rememberMe);\n }\n }\n getAccessToken() {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return (localStorage.getItem(this.environment.tokenKey) ||\n sessionStorage.getItem(this.environment.tokenKey));\n }\n getRefreshToken() {\n // Refresh tokens are now stored in HttpOnly cookies by the server\n // We can't read them directly from client-side code for security\n // They are automatically sent with requests when withCredentials: true is used\n return null;\n }\n setToken(token, rememberMe = false) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (rememberMe) {\n localStorage.setItem(this.environment.tokenKey, token);\n }\n else {\n sessionStorage.setItem(this.environment.tokenKey, token);\n }\n }\n setRefreshToken(_refreshToken, _rememberMe = false) {\n // Refresh tokens are now set by the server as HttpOnly cookies\n // Client-side code cannot set HttpOnly cookies for security reasons\n // They are set in response to successful login/register requests\n }\n clearTokens() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n localStorage.removeItem(this.environment.tokenKey);\n localStorage.removeItem(this.environment.refreshTokenKey);\n sessionStorage.removeItem(this.environment.tokenKey);\n sessionStorage.removeItem(this.environment.refreshTokenKey);\n }\n isAuthenticated() {\n const accessToken = this.getAccessToken();\n if (!accessToken) {\n return false;\n }\n try {\n const decodedAccessToken = jwtDecode(accessToken);\n const accessExpiration = Number(decodedAccessToken.exp);\n const currentTimeUTC = Math.floor(Date.now() / 1000);\n return accessExpiration > currentTimeUTC;\n }\n catch {\n return false;\n }\n }\n needsRefresh() {\n const accessToken = this.getAccessToken();\n if (!accessToken) {\n return false;\n }\n try {\n const decodedToken = jwtDecode(accessToken);\n const expiration = Number(decodedToken.exp);\n const currentTimeUTC = Math.floor(Date.now() / 1000);\n const timeUntilExpiry = expiration - currentTimeUTC;\n return timeUntilExpiry <= 300; // 5 minutes\n }\n catch {\n return false;\n }\n }\n getTokenPayload() {\n const token = this.getAccessToken();\n if (!token)\n return null;\n try {\n return jwtDecode(token);\n }\n catch (error) {\n return null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9yZXBvc2l0b3JpZXMvdG9rZW4ucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS25ELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV6QyxVQUFVLENBQUMsTUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUMvQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FDTCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQy9DLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFD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LGNBQWMsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO3VHQXBHVSxlQUFlOzJHQUFmLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGp3dERlY29kZSB9IGZyb20gJ2p3dC1kZWNvZGUnO1xuaW1wb3J0IHsgQXV0aFRva2VucyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRva2VuUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIHNhdmVUb2tlbnModG9rZW5zOiBBdXRoVG9rZW5zLCByZW1lbWJlck1lID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5zZXRUb2tlbih0b2tlbnMudG9rZW4sIHJlbWVtYmVyTWUpO1xuICAgICAgdGhpcy5zZXRSZWZyZXNoVG9rZW4odG9rZW5zLnJlZnJlc2hUb2tlbiwgcmVtZW1iZXJNZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWNjZXNzVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpIHx8XG4gICAgICBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpXG4gICAgKTtcbiAgfVxuXG4gIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAvLyBSZWZyZXNoIHRva2VucyBhcmUgbm93IHN0b3JlZCBpbiBIdHRwT25seSBjb29raWVzIGJ5IHRoZSBzZXJ2ZXJcbiAgICAvLyBXZSBjYW4ndCByZWFkIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQtc2lkZSBjb2RlIGZvciBzZWN1cml0eVxuICAgIC8vIFRoZXkgYXJlIGF1dG9tYXRpY2FsbHkgc2VudCB3aXRoIHJlcXVlc3RzIHdoZW4gd2l0aENyZWRlbnRpYWxzOiB0cnVlIGlzIHVzZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldFRva2VuKHRva2VuOiBzdHJpbmcsIHJlbWVtYmVyTWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5lbnZpcm9ubWVudC50b2tlbktleSwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXksIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBzZXRSZWZyZXNoVG9rZW4oX3JlZnJlc2hUb2tlbjogc3RyaW5nLCBfcmVtZW1iZXJNZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgLy8gUmVmcmVzaCB0b2tlbnMgYXJlIG5vdyBzZXQgYnkgdGhlIHNlcnZlciBhcyBIdHRwT25seSBjb29raWVzXG4gICAgLy8gQ2xpZW50LXNpZGUgY29kZSBjYW5ub3Qgc2V0IEh0dHBPbmx5IGNvb2tpZXMgZm9yIHNlY3VyaXR5IHJlYXNvbnNcbiAgICAvLyBUaGV5IGFyZSBzZXQgaW4gcmVzcG9uc2UgdG8gc3VjY2Vzc2Z1bCBsb2dpbi9yZWdpc3RlciByZXF1ZXN0c1xuICB9XG5cbiAgY2xlYXJUb2tlbnMoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQucmVmcmVzaFRva2VuS2V5KTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5lbnZpcm9ubWVudC5yZWZyZXNoVG9rZW5LZXkpO1xuICB9XG5cbiAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkQWNjZXNzVG9rZW4gPSBqd3REZWNvZGUoYWNjZXNzVG9rZW4pO1xuICAgICAgY29uc3QgYWNjZXNzRXhwaXJhdGlvbiA9IE51bWJlcihkZWNvZGVkQWNjZXNzVG9rZW4uZXhwKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lVVRDID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG5cbiAgICAgIHJldHVybiBhY2Nlc3NFeHBpcmF0aW9uID4gY3VycmVudFRpbWVVVEM7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmVlZHNSZWZyZXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gand0RGVjb2RlKGFjY2Vzc1Rva2VuKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBOdW1iZXIoZGVjb2RlZFRva2VuLmV4cCk7XG4gICAgICBjb25zdCBjdXJyZW50VGltZVVUQyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICAgICAgY29uc3QgdGltZVVudGlsRXhwaXJ5ID0gZXhwaXJhdGlvbiAtIGN1cnJlbnRUaW1lVVRDO1xuXG4gICAgICByZXR1cm4gdGltZVVudGlsRXhwaXJ5IDw9IDMwMDsgLy8gNSBtaW51dGVzXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkKCk6IGFueSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuIG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGp3dERlY29kZSh0b2tlbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../repositories/token.repository\";\nexport class AuthTokenService {\n tokenRepository;\n constructor(tokenRepository) {\n this.tokenRepository = tokenRepository;\n }\n getToken() {\n return this.tokenRepository.getAccessToken();\n }\n isAuthenticated() {\n return this.tokenRepository.isAuthenticated();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, deps: [{ token: i1.TokenRepository }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.TokenRepository }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3NlcnZpY2VzL2F1dGgtdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUNQO0lBQXBCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNoRCxDQUFDO3VHQVRVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVG9rZW5Qcm92aWRlciB9IGZyb20gJ0BhY29udHBsdXMvbmctaW5mcmFzdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgVG9rZW5SZXBvc2l0b3J5IH0gZnJvbSAnLi4vcmVwb3NpdG9yaWVzL3Rva2VuLnJlcG9zaXRvcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhUb2tlblNlcnZpY2UgaW1wbGVtZW50cyBJVG9rZW5Qcm92aWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW5SZXBvc2l0b3J5OiBUb2tlblJlcG9zaXRvcnkpIHt9XG5cbiAgZ2V0VG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldEFjY2Vzc1Rva2VuKCk7XG4gIH1cblxuICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5SZXBvc2l0b3J5LmlzQXV0aGVudGljYXRlZCgpO1xuICB9XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthTokenService } from '../services/auth-token.service';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nexport const authGuard = (_route, _state) => {\n const authService = inject(AuthTokenService);\n const router = inject(Router);\n const environment = inject(ENVIRONMENT);\n if (authService.isAuthenticated()) {\n return true;\n }\n // Redirect to login page (configurable via environment)\n router.navigate([environment.loginRoute]);\n return false;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBaUIsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDekQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV4QyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC10b2tlbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuXG5leHBvcnQgY29uc3QgYXV0aEd1YXJkOiBDYW5BY3RpdmF0ZUZuID0gKF9yb3V0ZSwgX3N0YXRlKSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhUb2tlblNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBpbmplY3QoRU5WSVJPTk1FTlQpO1xuXG4gIGlmIChhdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gUmVkaXJlY3QgdG8gbG9naW4gcGFnZSAoY29uZmlndXJhYmxlIHZpYSBlbnZpcm9ubWVudClcbiAgcm91dGVyLm5hdmlnYXRlKFtlbnZpcm9ubWVudC5sb2dpblJvdXRlXSk7XG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=","// src/lib/services/csrf.service.ts\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class CsrfService {\n http = inject(HttpClient);\n environment = inject(ENVIRONMENT);\n csrfToken = null;\n /**\n * Get CSRF token, fetching it if not available\n */\n async getCsrfToken() {\n if (this.csrfToken) {\n return this.csrfToken;\n }\n try {\n const response = await this.http\n .get(`${this.environment.apiBaseUrl}/csrf-token`)\n .toPromise();\n this.csrfToken = response?.csrfToken || null;\n return this.csrfToken || '';\n }\n catch {\n // If CSRF endpoint fails, return empty token\n // Server should handle missing CSRF tokens appropriately\n return '';\n }\n }\n /**\n * Clear stored CSRF token (useful on logout)\n */\n clearCsrfToken() {\n this.csrfToken = null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NyZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3NlcnZpY2VzL2NzcmYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLFdBQVc7SUFDZCxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFeEM7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQzdCLEdBQUcsQ0FBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDO2lCQUN2RSxTQUFTLEVBQUUsQ0FBQztZQUVmLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsNkNBQTZDO1lBQzdDLHlEQUF5RDtZQUN6RCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzt1R0FoQ1UsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL3NlcnZpY2VzL2NzcmYuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICdAYWNvbnRwbHVzL25nLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDc3JmU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVCk7XG4gIHByaXZhdGUgY3NyZlRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogR2V0IENTUkYgdG9rZW4sIGZldGNoaW5nIGl0IGlmIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIGFzeW5jIGdldENzcmZUb2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmNzcmZUb2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMuY3NyZlRva2VuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PHsgY3NyZlRva2VuOiBzdHJpbmcgfT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlCYXNlVXJsfS9jc3JmLXRva2VuYClcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICB0aGlzLmNzcmZUb2tlbiA9IHJlc3BvbnNlPy5jc3JmVG9rZW4gfHwgbnVsbDtcbiAgICAgIHJldHVybiB0aGlzLmNzcmZUb2tlbiB8fCAnJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElmIENTUkYgZW5kcG9pbnQgZmFpbHMsIHJldHVybiBlbXB0eSB0b2tlblxuICAgICAgLy8gU2VydmVyIHNob3VsZCBoYW5kbGUgbWlzc2luZyBDU1JGIHRva2VucyBhcHByb3ByaWF0ZWx5XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHN0b3JlZCBDU1JGIHRva2VuICh1c2VmdWwgb24gbG9nb3V0KVxuICAgKi9cbiAgY2xlYXJDc3JmVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5jc3JmVG9rZW4gPSBudWxsO1xuICB9XG59XG4iXX0=","export class User {\n id;\n email;\n displayName;\n _refreshToken;\n constructor(id, email, displayName, _refreshToken) {\n this.id = id;\n this.email = email;\n this.displayName = displayName;\n this._refreshToken = _refreshToken;\n }\n get refreshToken() {\n return this._refreshToken;\n }\n updateRefreshToken(token) {\n this._refreshToken = token;\n }\n clearRefreshToken() {\n this._refreshToken = undefined;\n }\n static create(email, displayName, _password) {\n const id = Date.now(); // Generate a numeric ID\n return new User(id, email, displayName);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9kb21haW4vbW9kZWxzL3VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE1BQU0sT0FBTyxJQUFJO0lBRUc7SUFDQTtJQUNBO0lBQ1I7SUFKVixZQUNrQixFQUFVLEVBQ1YsS0FBYSxFQUNiLFdBQW1CLEVBQzNCLGFBQXNCO1FBSGQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBUztJQUM3QixDQUFDO0lBRUosSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxTQUFpQjtRQUNqRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7UUFDL0MsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL21vZGVscy91c2VyLnRzXG5pbXBvcnQgeyBCYXNlRW50aXR5IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFRva2VuUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVXNlciBpbXBsZW1lbnRzIEJhc2VFbnRpdHkge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IG51bWJlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZW1haWw6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIF9yZWZyZXNoVG9rZW4/OiBzdHJpbmcsXG4gICkge31cblxuICBnZXQgcmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hUb2tlbjtcbiAgfVxuXG4gIHVwZGF0ZVJlZnJlc2hUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFRva2VuID0gdG9rZW47XG4gIH1cblxuICBjbGVhclJlZnJlc2hUb2tlbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZyZXNoVG9rZW4gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGVtYWlsOiBzdHJpbmcsIGRpc3BsYXlOYW1lOiBzdHJpbmcsIF9wYXNzd29yZDogc3RyaW5nKTogVXNlciB7XG4gICAgY29uc3QgaWQgPSBEYXRlLm5vdygpOyAvLyBHZW5lcmF0ZSBhIG51bWVyaWMgSURcbiAgICByZXR1cm4gbmV3IFVzZXIoaWQsIGVtYWlsLCBkaXNwbGF5TmFtZSk7XG4gIH1cbn1cbiJdfQ==","// src/lib/domain/models/index.ts\nexport * from './user';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2RvbWFpbi9tb2RlbHMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vdXNlcic7XG4iXX0=","export class AuthRepository {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBZ0IsY0FBYztDQUtuQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9hdXRoLnJlcG9zaXRvcnkudHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXIsIExvZ2luUmVxdWVzdCwgUmVnaXN0ZXJSZXF1ZXN0LCBSZWZyZXNoVG9rZW5SZXF1ZXN0IH0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xuaW1wb3J0IHsgQXV0aFRva2VucyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoUmVwb3NpdG9yeSB7XG4gIGFic3RyYWN0IGxvZ2luKHJlcXVlc3Q6IExvZ2luUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz47XG4gIGFic3RyYWN0IHJlZ2lzdGVyKHJlcXVlc3Q6IFJlZ2lzdGVyUmVxdWVzdCk6IE9ic2VydmFibGU8VXNlcj47XG4gIGFic3RyYWN0IHJlZnJlc2hUb2tlbihyZXF1ZXN0OiBSZWZyZXNoVG9rZW5SZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPjtcbiAgYWJzdHJhY3QgbG9nb3V0KGVtYWlsOiBzdHJpbmcsIHJlZnJlc2hUb2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cbiJdfQ==","// src/lib/domain/repositories/index.ts\nexport * from './auth.repository';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnJlcG9zaXRvcnknO1xuIl19","// src/lib/domain/index.ts\nexport * from './models';\nexport * from './repositories';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9kb21haW4vaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3NpdG9yaWVzJztcbiJdfQ==","// src/lib/data/repositories/auth-http.repository.ts\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map, from } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { User } from '../../domain/models/user';\nimport { AuthTokens } from '@acontplus/core';\nimport { AUTH_API } from '@acontplus/ng-config';\nimport { CsrfService } from '../../services/csrf.service';\nimport * as i0 from \"@angular/core\";\nfunction getDeviceInfo() {\n return `${navigator.platform ?? 'Unknown'} - ${navigator.userAgent}`;\n}\nexport class AuthHttpRepository extends AuthRepository {\n http = inject(HttpClient);\n csrfService = inject(CsrfService);\n URL = `${AUTH_API.ACCOUNT}`;\n login(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http.post(`${this.URL}login`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })));\n }\n register(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http\n .post(`${this.URL}register`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })\n .pipe(map(response => {\n // Convert string ID to number - if response.id is a string, hash it to get a number\n const numericId = response.id !== ''\n ? Math.abs(response.id.split('').reduce((a, b) => {\n a = (a << 5) - a + b.charCodeAt(0);\n return a & a;\n }, 0))\n : Date.now();\n return new User(numericId, request.email, request.displayName);\n }))));\n }\n refreshToken(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http\n .post(`${this.URL}refresh`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })\n .pipe(map(response => new AuthTokens(response.token, response.refreshToken)))));\n }\n logout(email, refreshToken) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http.post(`${this.URL}logout`, { email, refreshToken: refreshToken || undefined }, {\n headers: { 'X-CSRF-Token': csrfToken },\n withCredentials: true, // Ensure cookies are sent\n })));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9yZXBvc2l0b3JpZXMvYXV0aC1odHRwLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBd0UsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTFELFNBQVMsYUFBYTtJQUNwQixPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsSUFBSSxTQUFTLE1BQU0sU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3ZFLENBQUM7QUFLRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsY0FBYztJQUNuQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRTdDLEtBQUssQ0FBQyxPQUFxQjtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFFO1lBQ3RELE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsYUFBYSxFQUFFO2dCQUM5QixjQUFjLEVBQUUsU0FBUzthQUMxQjtZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQy9DLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNwQixJQUFJLENBQUMsSUFBSTthQUNOLElBQUksQ0FBbUIsR0FBRyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsT0FBTyxFQUFFO1lBQ3RELE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsYUFBYSxFQUFFO2dCQUM5QixjQUFjLEVBQUUsU0FBUzthQUMxQjtZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2Isb0ZBQW9GO1lBQ3BGLE1BQU0sU0FBUyxHQUNiLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRTtnQkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ04sUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNwQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ047Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FDSCxDQUNKLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBNEI7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3BCLElBQUksQ0FBQyxJQUFJO2FBQ04sSUFBSSxDQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRTtZQUMvQyxPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLGFBQWEsRUFBRTtnQkFDOUIsY0FBYyxFQUFFLFNBQVM7YUFDMUI7WUFDRCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FDaEYsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsWUFBb0I7UUFDeEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxZQUFZLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDNUYsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxFQUFFLDBCQUEwQjtTQUNsRCxDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQzt1R0ExRVUsa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZGF0YS9yZXBvc2l0b3JpZXMvYXV0aC1odHRwLnJlcG9zaXRvcnkudHNcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBMb2dpblJlcXVlc3QsIFJlZ2lzdGVyUmVxdWVzdCwgUmVmcmVzaFRva2VuUmVxdWVzdCwgUmVnaXN0ZXJSZXNwb25zZSwgVXNlciB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvdXNlcic7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IEFVVEhfQVBJIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuaW1wb3J0IHsgQ3NyZlNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jc3JmLnNlcnZpY2UnO1xuXG5mdW5jdGlvbiBnZXREZXZpY2VJbmZvKCk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtuYXZpZ2F0b3IucGxhdGZvcm0gPz8gJ1Vua25vd24nfSAtICR7bmF2aWdhdG9yLnVzZXJBZ2VudH1gO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aEh0dHBSZXBvc2l0b3J5IGV4dGVuZHMgQXV0aFJlcG9zaXRvcnkge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3NyZlNlcnZpY2UgPSBpbmplY3QoQ3NyZlNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IFVSTCA9IGAke0FVVEhfQVBJLkFDQ09VTlR9YDtcblxuICBsb2dpbihyZXF1ZXN0OiBMb2dpblJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhUb2tlbnM+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNzcmZTZXJ2aWNlLmdldENzcmZUb2tlbigpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNzcmZUb2tlbiA9PlxuICAgICAgICB0aGlzLmh0dHAucG9zdDxBdXRoVG9rZW5zPihgJHt0aGlzLlVSTH1sb2dpbmAsIHJlcXVlc3QsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnRGV2aWNlLUluZm8nOiBnZXREZXZpY2VJbmZvKCksXG4gICAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZlRva2VuLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZWdpc3RlcihyZXF1ZXN0OiBSZWdpc3RlclJlcXVlc3QpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNzcmZTZXJ2aWNlLmdldENzcmZUb2tlbigpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNzcmZUb2tlbiA9PlxuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdDxSZWdpc3RlclJlc3BvbnNlPihgJHt0aGlzLlVSTH1yZWdpc3RlcmAsIHJlcXVlc3QsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0RldmljZS1JbmZvJzogZ2V0RGV2aWNlSW5mbygpLFxuICAgICAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZlRva2VuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgSUQgdG8gbnVtYmVyIC0gaWYgcmVzcG9uc2UuaWQgaXMgYSBzdHJpbmcsIGhhc2ggaXQgdG8gZ2V0IGEgbnVtYmVyXG4gICAgICAgICAgICAgIGNvbnN0IG51bWVyaWNJZCA9XG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuaWQgIT09ICcnXG4gICAgICAgICAgICAgICAgICA/IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmlkLnNwbGl0KCcnKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAoYSA8PCA1KSAtIGEgKyBiLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSAmIGE7XG4gICAgICAgICAgICAgICAgICAgICAgfSwgMCksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVc2VyKG51bWVyaWNJZCwgcmVxdWVzdC5lbWFpbCwgcmVxdWVzdC5kaXNwbGF5TmFtZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJlZnJlc2hUb2tlbihyZXF1ZXN0OiBSZWZyZXNoVG9rZW5SZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jc3JmU2VydmljZS5nZXRDc3JmVG9rZW4oKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChjc3JmVG9rZW4gPT5cbiAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgLnBvc3Q8QXV0aFRva2Vucz4oYCR7dGhpcy5VUkx9cmVmcmVzaGAsIHJlcXVlc3QsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0RldmljZS1JbmZvJzogZ2V0RGV2aWNlSW5mbygpLFxuICAgICAgICAgICAgICAnWC1DU1JGLVRva2VuJzogY3NyZlRva2VuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiBuZXcgQXV0aFRva2VucyhyZXNwb25zZS50b2tlbiwgcmVzcG9uc2UucmVmcmVzaFRva2VuKSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGxvZ291dChlbWFpbDogc3RyaW5nLCByZWZyZXNoVG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY3NyZlNlcnZpY2UuZ2V0Q3NyZlRva2VuKCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY3NyZlRva2VuID0+XG4gICAgICAgIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KGAke3RoaXMuVVJMfWxvZ291dGAsIHsgZW1haWwsIHJlZnJlc2hUb2tlbjogcmVmcmVzaFRva2VuIHx8IHVuZGVmaW5lZCB9LCB7XG4gICAgICAgICAgaGVhZGVyczogeyAnWC1DU1JGLVRva2VuJzogY3NyZlRva2VuIH0sXG4gICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLCAvLyBFbnN1cmUgY29va2llcyBhcmUgc2VudFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==","// src/lib/data/repositories/index.ts\nexport * from './auth-http.repository';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9yZXBvc2l0b3JpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUNBQXFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2RhdGEvcmVwb3NpdG9yaWVzL2luZGV4LnRzXG5leHBvcnQgKiBmcm9tICcuL2F1dGgtaHR0cC5yZXBvc2l0b3J5JztcbiJdfQ==","// src/lib/data/index.ts\nexport * from './repositories';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3QkFBd0I7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZGF0YS9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvc2l0b3JpZXMnO1xuIl19","// src/lib/presentation/stores/auth.store.ts\nimport { Injectable, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of, tap, catchError } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { UserRepository } from '@acontplus/ng-infrastructure';\nimport * as i0 from \"@angular/core\";\nexport class AuthStore {\n authRepository = inject(AuthRepository);\n tokenRepository = inject(TokenRepository);\n userRepository = inject(UserRepository);\n router = inject(Router);\n // Authentication state signals\n _isAuthenticated = signal(false, ...(ngDevMode ? [{ debugName: \"_isAuthenticated\" }] : []));\n _isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"_isLoading\" }] : []));\n _user = signal(null, ...(ngDevMode ? [{ debugName: \"_user\" }] : []));\n // Public readonly signals\n isAuthenticated = this._isAuthenticated.asReadonly();\n isLoading = this._isLoading.asReadonly();\n user = this._user.asReadonly();\n // Private refresh token timeout (instead of interval)\n refreshTokenTimeout;\n refreshInProgress$;\n constructor() {\n this.initializeAuthentication();\n }\n /**\n * Initialize authentication state on app startup\n */\n initializeAuthentication() {\n this._isLoading.set(true);\n try {\n const isAuthenticated = this.tokenRepository.isAuthenticated();\n this._isAuthenticated.set(isAuthenticated);\n if (isAuthenticated) {\n const userData = this.userRepository.getCurrentUser();\n this._user.set(userData);\n this.scheduleTokenRefresh();\n }\n }\n catch {\n this.logout();\n }\n finally {\n this._isLoading.set(false);\n }\n }\n /**\n * Schedule token refresh based on actual expiration time\n */\n scheduleTokenRefresh() {\n const accessToken = this.tokenRepository.getAccessToken();\n if (!accessToken) {\n return;\n }\n try {\n const decodedToken = this.decodeToken(accessToken);\n const currentTime = Math.floor(Date.now() / 1000);\n const timeUntilExpiry = decodedToken.exp - currentTime;\n // Refresh 5 minutes before expiry (300 seconds)\n const refreshTime = Math.max((timeUntilExpiry - 300) * 1000, 1000);\n // Clear any existing timeout\n if (this.refreshTokenTimeout) {\n clearTimeout(this.refreshTokenTimeout);\n }\n this.refreshTokenTimeout = window.setTimeout(() => {\n // Check if refresh is still needed before executing\n if (this.tokenRepository.needsRefresh()) {\n this.refreshToken().subscribe();\n }\n }, refreshTime);\n }\n catch {\n // Silent fail - token might be invalid\n }\n }\n /**\n * Stop token refresh timer\n */\n stopTokenRefreshTimer() {\n if (this.refreshTokenTimeout) {\n clearTimeout(this.refreshTokenTimeout);\n this.refreshTokenTimeout = undefined;\n }\n }\n /**\n * Refresh authentication tokens\n */\n refreshToken() {\n // Return existing refresh request if one is in progress\n if (this.refreshInProgress$) {\n return this.refreshInProgress$;\n }\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (!userData?.email || !refreshToken) {\n this.logout();\n return of(null);\n }\n this.refreshInProgress$ = this.authRepository\n .refreshToken({\n email: userData.email,\n refreshToken,\n })\n .pipe(tap(tokens => {\n this.setAuthenticated(tokens);\n }), catchError(() => {\n this.logout();\n return of(null);\n }), tap({\n complete: () => {\n this.refreshInProgress$ = undefined;\n },\n error: () => {\n this.refreshInProgress$ = undefined;\n }\n }));\n return this.refreshInProgress$;\n }\n /**\n * Set authentication state after successful login\n */\n setAuthenticated(tokens) {\n this.tokenRepository.saveTokens(tokens);\n this._isAuthenticated.set(true);\n const userData = this.userRepository.getCurrentUser();\n this._user.set(userData);\n this.scheduleTokenRefresh();\n }\n /**\n * Logout user and clear all authentication data\n */\n logout() {\n const user = this._user();\n if (user) {\n // Call server-side logout first\n this.authRepository.logout(user.email, '').subscribe({\n next: () => {\n // Server logout successful, clear client-side data\n this.performClientLogout();\n },\n error: () => {\n // Server logout failed, still clear client-side data for security\n this.performClientLogout();\n }\n });\n }\n else {\n // No user data, just clear client-side data\n this.performClientLogout();\n }\n }\n /**\n * Perform client-side logout operations\n */\n performClientLogout() {\n this.stopTokenRefreshTimer();\n this.tokenRepository.clearTokens();\n this._isAuthenticated.set(false);\n this._user.set(null);\n // Navigate to login page\n this.router.navigate(['/auth']);\n }\n /**\n * Check if user is authenticated\n */\n checkAuthentication() {\n const isAuthenticated = this.tokenRepository.isAuthenticated();\n this._isAuthenticated.set(isAuthenticated);\n if (!isAuthenticated) {\n this.logout();\n }\n return isAuthenticated;\n }\n /**\n * Decode JWT token\n */\n decodeToken(token) {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map(c => {\n return `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`;\n })\n .join(''));\n return JSON.parse(jsonPayload);\n }\n catch {\n throw new Error('Invalid token format');\n }\n }\n /**\n * Cleanup on store destruction\n */\n ngOnDestroy() {\n this.stopTokenRefreshTimer();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi91aS9zdG9yZXMvYXV0aC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBTzlELE1BQU0sT0FBTyxTQUFTO0lBQ0gsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV6QywrQkFBK0I7SUFDZCxnQkFBZ0IsR0FBRyxNQUFNLENBQVUsS0FBSyw0REFBQyxDQUFDO0lBQzFDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxzREFBQyxDQUFDO0lBQ3BDLEtBQUssR0FBRyxNQUFNLENBQWtCLElBQUksaURBQUMsQ0FBQztJQUV2RCwwQkFBMEI7SUFDakIsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVB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QUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQzt1R0EzTlUsU0FBUzsyR0FBVCxTQUFTLGNBRlIsTUFBTTs7MkZBRVAsU0FBUztrQkFIckIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL3ByZXNlbnRhdGlvbi9zdG9yZXMvYXV0aC5zdG9yZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBzaWduYWwsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGp3dERlY29kZSB9IGZyb20gJ2p3dC1kZWNvZGUnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBUb2tlblJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9yZXBvc2l0b3JpZXMvdG9rZW4ucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BhY29udHBsdXMvbmctaW5mcmFzdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgQXV0aFRva2VucyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBVc2VyRGF0YSwgRGVjb2RlZFRva2VuIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhTdG9yZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFJlcG9zaXRvcnkgPSBpbmplY3QoQXV0aFJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuUmVwb3NpdG9yeSA9IGluamVjdChUb2tlblJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5ID0gaW5qZWN0KFVzZXJSZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICAvLyBBdXRoZW50aWNhdGlvbiBzdGF0ZSBzaWduYWxzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzQXV0aGVudGljYXRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3VzZXIgPSBzaWduYWw8VXNlckRhdGEgfCBudWxsPihudWxsKTtcblxuICAvLyBQdWJsaWMgcmVhZG9ubHkgc2lnbmFsc1xuICByZWFkb25seSBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSB0aGlzLl9pc0xvYWRpbmcuYXNSZWFkb25seSgpO1xuICByZWFkb25seSB1c2VyID0gdGhpcy5fdXNlci5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gUHJpdmF0ZSByZWZyZXNoIHRva2VuIHRpbWVvdXQgKGluc3RlYWQgb2YgaW50ZXJ2YWwpXG4gIHByaXZhdGUgcmVmcmVzaFRva2VuVGltZW91dD86IG51bWJlcjtcbiAgcHJpdmF0ZSByZWZyZXNoSW5Qcm9ncmVzcyQ/OiBPYnNlcnZhYmxlPEF1dGhUb2tlbnMgfCBudWxsPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmluaXRpYWxpemVBdXRoZW50aWNhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgYXV0aGVudGljYXRpb24gc3RhdGUgb24gYXBwIHN0YXJ0dXBcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUF1dGhlbnRpY2F0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2lzTG9hZGluZy5zZXQodHJ1ZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy50b2tlblJlcG9zaXRvcnkuaXNBdXRoZW50aWNhdGVkKCk7XG4gICAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQuc2V0KGlzQXV0aGVudGljYXRlZCk7XG5cbiAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnVzZXJSZXBvc2l0b3J5LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICAgIHRoaXMuX3VzZXIuc2V0KHVzZXJEYXRhKTtcbiAgICAgICAgdGhpcy5zY2hlZHVsZVRva2VuUmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5faXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlIHRva2VuIHJlZnJlc2ggYmFzZWQgb24gYWN0dWFsIGV4cGlyYXRpb24gdGltZVxuICAgKi9cbiAgcHJpdmF0ZSBzY2hlZHVsZVRva2VuUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkVG9rZW4gPSB0aGlzLmRlY29kZVRva2VuKGFjY2Vzc1Rva2VuKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG4gICAgICBjb25zdCB0aW1lVW50aWxFeHBpcnkgPSBkZWNvZGVkVG9rZW4uZXhwIC0gY3VycmVudFRpbWU7XG5cbiAgICAgIC8vIFJlZnJlc2ggNSBtaW51dGVzIGJlZm9yZSBleHBpcnkgKDMwMCBzZWNvbmRzKVxuICAgICAgY29uc3QgcmVmcmVzaFRpbWUgPSBNYXRoLm1heCgodGltZVVudGlsRXhwaXJ5IC0gMzAwKSAqIDEwMDAsIDEwMDApO1xuXG4gICAgICAvLyBDbGVhciBhbnkgZXhpc3RpbmcgdGltZW91dFxuICAgICAgaWYgKHRoaXMucmVmcmVzaFRva2VuVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWZyZXNoVG9rZW5UaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiByZWZyZXNoIGlzIHN0aWxsIG5lZWRlZCBiZWZvcmUgZXhlY3V0aW5nXG4gICAgICAgIGlmICh0aGlzLnRva2VuUmVwb3NpdG9yeS5uZWVkc1JlZnJlc2goKSkge1xuICAgICAgICAgIHRoaXMucmVmcmVzaFRva2VuKCkuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIHJlZnJlc2hUaW1lKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFNpbGVudCBmYWlsIC0gdG9rZW4gbWlnaHQgYmUgaW52YWxpZFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHRva2VuIHJlZnJlc2ggdGltZXJcbiAgICovXG4gIHByaXZhdGUgc3RvcFRva2VuUmVmcmVzaFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hUb2tlblRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUb2tlblRpbWVvdXQpO1xuICAgICAgdGhpcy5yZWZyZXNoVG9rZW5UaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGF1dGhlbnRpY2F0aW9uIHRva2Vuc1xuICAgKi9cbiAgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8QXV0aFRva2VucyB8IG51bGw+IHtcbiAgICAvLyBSZXR1cm4gZXhpc3RpbmcgcmVmcmVzaCByZXF1ZXN0IGlmIG9uZSBpcyBpbiBwcm9ncmVzc1xuICAgIGlmICh0aGlzLnJlZnJlc2hJblByb2dyZXNzJCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MkO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy51c2VyUmVwb3NpdG9yeS5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgaWYgKCF1c2VyRGF0YT8uZW1haWwgfHwgIXJlZnJlc2hUb2tlbikge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzJCA9IHRoaXMuYXV0aFJlcG9zaXRvcnlcbiAgICAgIC5yZWZyZXNoVG9rZW4oe1xuICAgICAgICBlbWFpbDogdXNlckRhdGEuZW1haWwsXG4gICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHRva2VucyA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRBdXRoZW50aWNhdGVkKHRva2Vucyk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCh7XG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MkID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGF1dGhlbnRpY2F0aW9uIHN0YXRlIGFmdGVyIHN1Y2Nlc3NmdWwgbG9naW5cbiAgICovXG4gIHNldEF1dGhlbnRpY2F0ZWQodG9rZW5zOiBBdXRoVG9rZW5zKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblJlcG9zaXRvcnkuc2F2ZVRva2Vucyh0b2tlbnMpO1xuICAgIHRoaXMuX2lzQXV0aGVudGljYXRlZC5zZXQodHJ1ZSk7XG4gICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnVzZXJSZXBvc2l0b3J5LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgdGhpcy5fdXNlci5zZXQodXNlckRhdGEpO1xuICAgIHRoaXMuc2NoZWR1bGVUb2tlblJlZnJlc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dvdXQgdXNlciBhbmQgY2xlYXIgYWxsIGF1dGhlbnRpY2F0aW9uIGRhdGFcbiAgICovXG4gIGxvZ291dCgpOiB2b2lkIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5fdXNlcigpO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICAvLyBDYWxsIHNlcnZlci1zaWRlIGxvZ291dCBmaXJzdFxuICAgICAgdGhpcy5hdXRoUmVwb3NpdG9yeS5sb2dvdXQodXNlci5lbWFpbCwgJycpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBTZXJ2ZXIgbG9nb3V0IHN1Y2Nlc3NmdWwsIGNsZWFyIGNsaWVudC1zaWRlIGRhdGFcbiAgICAgICAgICB0aGlzLnBlcmZvcm1DbGllbnRMb2dvdXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAvLyBTZXJ2ZXIgbG9nb3V0IGZhaWxlZCwgc3RpbGwgY2xlYXIgY2xpZW50LXNpZGUgZGF0YSBmb3Igc2VjdXJpdHlcbiAgICAgICAgICB0aGlzLnBlcmZvcm1DbGllbnRMb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIHVzZXIgZGF0YSwganVzdCBjbGVhciBjbGllbnQtc2lkZSBkYXRhXG4gICAgICB0aGlzLnBlcmZvcm1DbGllbnRMb2dvdXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBjbGllbnQtc2lkZSBsb2dvdXQgb3BlcmF0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBwZXJmb3JtQ2xpZW50TG9nb3V0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFRva2VuUmVmcmVzaFRpbWVyKCk7XG4gICAgdGhpcy50b2tlblJlcG9zaXRvcnkuY2xlYXJUb2tlbnMoKTtcbiAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQuc2V0KGZhbHNlKTtcbiAgICB0aGlzLl91c2VyLnNldChudWxsKTtcblxuICAgIC8vIE5hdmlnYXRlIHRvIGxvZ2luIHBhZ2VcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hdXRoJ10pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHVzZXIgaXMgYXV0aGVudGljYXRlZFxuICAgKi9cbiAgY2hlY2tBdXRoZW50aWNhdGlvbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLnRva2VuUmVwb3NpdG9yeS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQuc2V0KGlzQXV0aGVudGljYXRlZCk7XG5cbiAgICBpZiAoIWlzQXV0aGVudGljYXRlZCkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNBdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSBKV1QgdG9rZW5cbiAgICovXG4gIHByaXZhdGUgZGVjb2RlVG9rZW4odG9rZW46IHN0cmluZyk6IERlY29kZWRUb2tlbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2U2NFVybCA9IHRva2VuLnNwbGl0KCcuJylbMV07XG4gICAgICBjb25zdCBiYXNlNjQgPSBiYXNlNjRVcmwucmVwbGFjZSgvLS9nLCAnKycpLnJlcGxhY2UoL18vZywgJy8nKTtcbiAgICAgIGNvbnN0IGpzb25QYXlsb2FkID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICBhdG9iKGJhc2U2NClcbiAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgLm1hcChjID0+IHtcbiAgICAgICAgICAgIHJldHVybiBgJSR7YDAwJHtjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpfWAuc2xpY2UoLTIpfWA7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbignJyksXG4gICAgICApO1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRva2VuIGZvcm1hdCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnVwIG9uIHN0b3JlIGRlc3RydWN0aW9uXG4gICAqL1xuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUb2tlblJlZnJlc2hUaW1lcigpO1xuICB9XG59XG4iXX0=","// src/lib/application/use-cases/login.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { tap } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class LoginUseCase {\n authRepository = inject(AuthRepository);\n authStore = inject(AuthStore);\n router = inject(Router);\n execute(request) {\n return this.authRepository.login(request).pipe(tap(tokens => {\n // Set authentication state\n this.authStore.setAuthenticated(tokens);\n // Navigate to main page\n this.router.navigate(['/']);\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4udXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2xvZ2luLnVzZS1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUFrRDtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUt2RCxNQUFNLE9BQU8sWUFBWTtJQUNOLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxPQUFxQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFeEMsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzt1R0FmVSxZQUFZOzJHQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2xvZ2luLnVzZS1jYXNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1dGhSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluL3JlcG9zaXRvcmllcy9hdXRoLnJlcG9zaXRvcnknO1xuaW1wb3J0IHsgTG9naW5SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy91c2VyJztcbmltcG9ydCB7IEF1dGhUb2tlbnMgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFN0b3JlIH0gZnJvbSAnLi4vLi4vdWkvc3RvcmVzL2F1dGguc3RvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Vc2VDYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoUmVwb3NpdG9yeSA9IGluamVjdChBdXRoUmVwb3NpdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFN0b3JlID0gaW5qZWN0KEF1dGhTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgZXhlY3V0ZShyZXF1ZXN0OiBMb2dpblJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhUb2tlbnM+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoUmVwb3NpdG9yeS5sb2dpbihyZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKHRva2VucyA9PiB7XG4gICAgICAgIC8vIFNldCBhdXRoZW50aWNhdGlvbiBzdGF0ZVxuICAgICAgICB0aGlzLmF1dGhTdG9yZS5zZXRBdXRoZW50aWNhdGVkKHRva2Vucyk7XG5cbiAgICAgICAgLy8gTmF2aWdhdGUgdG8gbWFpbiBwYWdlXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==","// src/lib/application/use-cases/register.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { tap } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport * as i0 from \"@angular/core\";\nexport class RegisterUseCase {\n authRepository = inject(AuthRepository);\n router = inject(Router);\n execute(request) {\n return this.authRepository.register(request).pipe(tap(() => {\n this.router.navigate(['/', 'auth']);\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIudXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL3JlZ2lzdGVyLnVzZS1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBTTNFLE1BQU0sT0FBTyxlQUFlO0lBQ1QsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxPQUF3QjtRQUM5QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBVlUsZUFBZTsyR0FBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9yZWdpc3Rlci51c2UtY2FzZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFJlZ2lzdGVyUmVxdWVzdCwgVXNlciB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvdXNlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlclVzZUNhc2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhSZXBvc2l0b3J5ID0gaW5qZWN0KEF1dGhSZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuICBleGVjdXRlKHJlcXVlc3Q6IFJlZ2lzdGVyUmVxdWVzdCk6IE9ic2VydmFibGU8VXNlcj4ge1xuICAgIHJldHVybiB0aGlzLmF1dGhSZXBvc2l0b3J5LnJlZ2lzdGVyKHJlcXVlc3QpLnBpcGUoXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnYXV0aCddKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==","// src/lib/application/use-cases/refresh-token.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { throwError, catchError, tap } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { UserRepository } from '@acontplus/ng-infrastructure';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class RefreshTokenUseCase {\n authRepository = inject(AuthRepository);\n userRepository = inject(UserRepository);\n tokenRepository = inject(TokenRepository);\n authStore = inject(AuthStore);\n execute() {\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (!userData?.email || !refreshToken || refreshToken.trim().length === 0) {\n const error = new Error('No refresh token or email available');\n return throwError(() => error);\n }\n return this.authRepository\n .refreshToken({\n email: userData.email,\n refreshToken,\n })\n .pipe(tap(tokens => {\n // Update authentication state\n this.authStore.setAuthenticated(tokens);\n }), catchError(error => {\n // Don't logout here, let the interceptor handle it\n return throwError(() => error);\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC10b2tlbi51c2UtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvcmVmcmVzaC10b2tlbi51c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLG1CQUFtQjtJQUNiLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFL0MsT0FBTztRQUNMLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU1RCxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFFLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDL0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsWUFBWSxDQUFDO1lBQ1osS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO1lBQ3JCLFlBQVk7U0FDYixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLDhCQUE4QjtZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixtREFBbUQ7WUFDbkQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7dUdBOUJVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9yZWZyZXNoLXRva2VuLnVzZS1jYXNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BhY29udHBsdXMvbmctaW5mcmFzdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgVG9rZW5SZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vcmVwb3NpdG9yaWVzL3Rva2VuLnJlcG9zaXRvcnknO1xuaW1wb3J0IHsgQXV0aFRva2VucyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBBdXRoU3RvcmUgfSBmcm9tICcuLi8uLi91aS9zdG9yZXMvYXV0aC5zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZWZyZXNoVG9rZW5Vc2VDYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoUmVwb3NpdG9yeSA9IGluamVjdChBdXRoUmVwb3NpdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnkgPSBpbmplY3QoVXNlclJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuUmVwb3NpdG9yeSA9IGluamVjdChUb2tlblJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdG9yZSA9IGluamVjdChBdXRoU3RvcmUpO1xuXG4gIGV4ZWN1dGUoKTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPiB7XG4gICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnVzZXJSZXBvc2l0b3J5LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy50b2tlblJlcG9zaXRvcnkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cbiAgICBpZiAoIXVzZXJEYXRhPy5lbWFpbCB8fCAhcmVmcmVzaFRva2VuIHx8IHJlZnJlc2hUb2tlbi50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcignTm8gcmVmcmVzaCB0b2tlbiBvciBlbWFpbCBhdmFpbGFibGUnKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hdXRoUmVwb3NpdG9yeVxuICAgICAgLnJlZnJlc2hUb2tlbih7XG4gICAgICAgIGVtYWlsOiB1c2VyRGF0YS5lbWFpbCxcbiAgICAgICAgcmVmcmVzaFRva2VuLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodG9rZW5zID0+IHtcbiAgICAgICAgICAvLyBVcGRhdGUgYXV0aGVudGljYXRpb24gc3RhdGVcbiAgICAgICAgICB0aGlzLmF1dGhTdG9yZS5zZXRBdXRoZW50aWNhdGVkKHRva2Vucyk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBEb24ndCBsb2dvdXQgaGVyZSwgbGV0IHRoZSBpbnRlcmNlcHRvciBoYW5kbGUgaXRcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfVxufVxuIl19","// src/lib/application/use-cases/logout.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { of, tap } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { UserRepository } from '@acontplus/ng-infrastructure';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class LogoutUseCase {\n authRepository = inject(AuthRepository);\n userRepository = inject(UserRepository);\n tokenRepository = inject(TokenRepository);\n authStore = inject(AuthStore);\n execute() {\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (userData?.email && refreshToken && refreshToken.length > 0) {\n return this.authRepository.logout(userData.email, refreshToken).pipe(tap(() => this.cleanup()));\n }\n this.cleanup();\n return of(void 0);\n }\n cleanup() {\n // Use auth store for centralized logout\n this.authStore.logout();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LnVzZS1jYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9sb2dvdXQudXNlLWNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLGFBQWE7SUFDUCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9DLE9BQU87UUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFNUQsSUFBSSxRQUFRLEVBQUUsS0FBSyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVPLE9BQU87UUFDYix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxQixDQUFDO3VHQXJCVSxhQUFhOzJHQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2xvZ291dC51c2UtY2FzZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFVzZXJSZXBvc2l0b3J5IH0gZnJvbSAnQGFjb250cGx1cy9uZy1pbmZyYXN0cnVjdHVyZSc7XG5pbXBvcnQgeyBUb2tlblJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9yZXBvc2l0b3JpZXMvdG9rZW4ucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBBdXRoU3RvcmUgfSBmcm9tICcuLi8uLi91aS9zdG9yZXMvYXV0aC5zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dvdXRVc2VDYXNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoUmVwb3NpdG9yeSA9IGluamVjdChBdXRoUmVwb3NpdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnkgPSBpbmplY3QoVXNlclJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuUmVwb3NpdG9yeSA9IGluamVjdChUb2tlblJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdG9yZSA9IGluamVjdChBdXRoU3RvcmUpO1xuXG4gIGV4ZWN1dGUoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnVzZXJSZXBvc2l0b3J5LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy50b2tlblJlcG9zaXRvcnkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cbiAgICBpZiAodXNlckRhdGE/LmVtYWlsICYmIHJlZnJlc2hUb2tlbiAmJiByZWZyZXNoVG9rZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYXV0aFJlcG9zaXRvcnkubG9nb3V0KHVzZXJEYXRhLmVtYWlsLCByZWZyZXNoVG9rZW4pLnBpcGUodGFwKCgpID0+IHRoaXMuY2xlYW51cCgpKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXAoKTogdm9pZCB7XG4gICAgLy8gVXNlIGF1dGggc3RvcmUgZm9yIGNlbnRyYWxpemVkIGxvZ291dFxuICAgIHRoaXMuYXV0aFN0b3JlLmxvZ291dCgpO1xuICB9XG59XG4iXX0=","// src/lib/application/use-cases/index.ts\nexport * from './login.use-case';\nexport * from './register.use-case';\nexport * from './refresh-token.use-case';\nexport * from './logout.use-case';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4udXNlLWNhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlci51c2UtY2FzZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlZnJlc2gtdG9rZW4udXNlLWNhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dvdXQudXNlLWNhc2UnO1xuIl19","// src/lib/application/index.ts\nexport * from './use-cases';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi91c2UtY2FzZXMnO1xuIl19","// src/lib/presentation/stores/index.ts\nexport * from './auth.store';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvc3RvcmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJlc2VudGF0aW9uL3N0b3Jlcy9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnN0b3JlJztcbiJdfQ==","// src/lib/presentation/components/login/login.component.ts\nimport { ChangeDetectionStrategy, Component, inject, input, signal, computed, } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, Validators, ReactiveFormsModule, } from '@angular/forms';\nimport { MatCard, MatCardContent, MatCardFooter, MatCardHeader, MatCardTitle, } from '@angular/material/card';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatAnchor, MatButton } from '@angular/material/button';\nimport { LoginUseCase } from '../../application/use-cases/login.use-case';\nimport { RegisterUseCase } from '../../application/use-cases/register.use-case';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nexport class LoginComponent {\n title = input('Login', ...(ngDevMode ? [{ debugName: \"title\" }] : []));\n showRegisterButton = input(true, ...(ngDevMode ? [{ debugName: \"showRegisterButton\" }] : []));\n // Additional form controls that can be passed from parent components\n additionalSigninControls = input({}, ...(ngDevMode ? [{ debugName: \"additionalSigninControls\" }] : []));\n additionalSignupControls = input({}, ...(ngDevMode ? [{ debugName: \"additionalSignupControls\" }] : []));\n // Additional field templates\n additionalSigninFields = input(null, ...(ngDevMode ? [{ debugName: \"additionalSigninFields\" }] : []));\n additionalSignupFields = input(null, ...(ngDevMode ? [{ debugName: \"additionalSignupFields\" }] : []));\n // Footer content template\n footerContent = input(null, ...(ngDevMode ? [{ debugName: \"footerContent\" }] : []));\n // Computed signal to check if footer content exists\n hasFooterContent = computed(() => this.footerContent() !== null, ...(ngDevMode ? [{ debugName: \"hasFooterContent\" }] : []));\n fb = inject(FormBuilder);\n loginUseCase = inject(LoginUseCase);\n registerUseCase = inject(RegisterUseCase);\n // Angular 20+ signals\n isLoginMode = signal(true, ...(ngDevMode ? [{ debugName: \"isLoginMode\" }] : []));\n isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n errorMessage = signal(null, ...(ngDevMode ? [{ debugName: \"errorMessage\" }] : []));\n signinForm;\n signupForm;\n constructor() {\n this.signinForm = this.fb.group({\n email: ['', [Validators.required, Validators.email]],\n password: ['', Validators.required],\n });\n this.signupForm = this.fb.group({\n displayName: ['', Validators.required],\n email: ['', [Validators.required, Validators.email]],\n password: ['', [Validators.required, Validators.minLength(6)]],\n });\n }\n ngOnInit() {\n // Add additional controls to signin form\n Object.entries(this.additionalSigninControls()).forEach(([key, control]) => {\n this.signinForm.addControl(key, control);\n });\n // Add additional controls to signup form\n Object.entries(this.additionalSignupControls()).forEach(([key, control]) => {\n this.signupForm.addControl(key, control);\n });\n }\n switchMode() {\n this.isLoginMode.set(!this.isLoginMode());\n this.errorMessage.set(null);\n }\n signIn() {\n if (this.signinForm.valid) {\n this.isLoading.set(true);\n this.errorMessage.set(null);\n this.loginUseCase.execute(this.signinForm.value).subscribe({\n next: () => {\n this.isLoading.set(false);\n },\n error: error => {\n this.isLoading.set(false);\n this.errorMessage.set('Error al iniciar sesión. Verifique sus credenciales.');\n console.error('Login error:', error);\n },\n });\n }\n }\n registerUser() {\n if (this.signupForm.valid) {\n this.isLoading.set(true);\n this.errorMessage.set(null);\n this.registerUseCase.execute(this.signupForm.value).subscribe({\n next: () => {\n this.isLoading.set(false);\n this.signupForm.reset();\n this.isLoginMode.set(true);\n },\n error: error => {\n this.isLoading.set(false);\n this.errorMessage.set('Error al registrar usuario. Intente nuevamente.');\n console.error('Register error:', error);\n },\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: LoginComponent, isStandalone: true, selector: \"acp-login\", inputs: { title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, showRegisterButton: { classPropertyName: \"showRegisterButton\", publicName: \"showRegisterButton\", isSignal: true, isRequired: false, transformFunction: null }, additionalSigninControls: { classPropertyName: \"additionalSigninControls\", publicName: \"additionalSigninControls\", isSignal: true, isRequired: false, transformFunction: null }, additionalSignupControls: { classPropertyName: \"additionalSignupControls\", publicName: \"additionalSignupControls\", isSignal: true, isRequired: false, transformFunction: null }, additionalSigninFields: { classPropertyName: \"additionalSigninFields\", publicName: \"additionalSigninFields\", isSignal: true, isRequired: false, transformFunction: null }, additionalSignupFields: { classPropertyName: \"additionalSignupFields\", publicName: \"additionalSignupFields\", isSignal: true, isRequired: false, transformFunction: null }, footerContent: { classPropertyName: \"footerContent\", publicName: \"footerContent\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<section id=\\\"wrapper\\\" class=\\\"d-flex justify-content-center align-items-center\\\">\\n <mat-card class=\\\"mat-elevation-z8 p-4 rounded\\\">\\n <mat-card-header>\\n <mat-card-title class=\\\"text-center\\\">{{ title() }}</mat-card-title>\\n </mat-card-header>\\n <mat-card-content>\\n @if (isLoginMode()) {\\n <form [formGroup]=\\\"signinForm\\\" (ngSubmit)=\\\"signIn()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Usuario</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su usuario\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signin fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSigninFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signinForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Ingresando...\\n } @else {\\n <ng-container>Ingresar <mat-icon>login</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n @if (showRegisterButton()) {\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\n \\u00BFNo tienes cuenta? Reg\\u00EDstrate\\n </button>\\n }\\n </div>\\n </form>\\n } @else {\\n <form [formGroup]=\\\"signupForm\\\" (ngSubmit)=\\\"registerUser()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su nombre\\\" formControlName=\\\"displayName\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Email</mat-label>\\n <input matInput type=\\\"email\\\" placeholder=\\\"Ingrese su email\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signup fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSignupFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signupForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Registrando...\\n } @else {\\n <ng-container>Registrarse <mat-icon>person_add</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\u00BFYa tienes cuenta? Inicia sesi\\u00F3n</button>\\n </div>\\n </form>\\n }\\n @if (errorMessage()) {\\n <div class=\\\"alert alert-danger mt-3\\\" role=\\\"alert\\\">\\n {{ errorMessage() }}\\n </div>\\n }\\n </mat-card-content>\\n @if (hasFooterContent()) {\\n <mat-card-footer>\\n <ng-container *ngTemplateOutlet=\\\"footerContent()\\\"></ng-container>\\n </mat-card-footer>\\n }\\n </mat-card>\\n</section>\\n\", styles: [\"#wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--mdc-theme-primary, #5c5f5c) 0%,var(--mdc-theme-secondary, #79747e) 100%);padding:20px}mat-card{width:100%;max-width:400px;border-radius:12px;box-shadow:0 8px 32px #0000001a}mat-card-header{text-align:center;margin-bottom:20px}mat-card-title{font-size:24px;font-weight:600;color:var(--mdc-theme-on-surface, #1c1b1f)}mat-form-field{width:100%}.w-100{width:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.gap-3{gap:12px}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.mt-3{margin-top:12px}.mt-2{margin-top:8px}.text-center{text-align:center}.p-4{padding:16px}.rounded{border-radius:12px}.alert-danger{background-color:var(--mdc-theme-error-container, #ffdad6);border-color:var(--mdc-theme-error, #ba1a1a);color:var(--mdc-theme-on-error-container, #410002);padding:12px;border-radius:4px;border:1px solid transparent}.row{display:flex;flex-wrap:wrap;margin:0 -15px}.col-xs-12,.col-sm-12,.col-md-12{flex:0 0 100%;max-width:100%;padding:0 15px}.m-t-10{margin-top:10px}.social{display:flex;justify-content:center}mat-button{border-radius:8px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"component\", type: MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"component\", type: MatCardHeader, selector: \"mat-card-header\" }, { kind: \"directive\", type: MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\" }, { kind: \"directive\", type: MatCardContent, selector: \"mat-card-content\" }, { kind: \"component\", type: MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\", \"disabledInteractive\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: MatCardFooter, selector: \"mat-card-footer\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-login', imports: [\n CommonModule,\n ReactiveFormsModule,\n MatCard,\n MatCardHeader,\n MatLabel,\n MatCardTitle,\n MatCardContent,\n MatFormField,\n MatInput,\n MatIcon,\n MatButton,\n MatCardFooter,\n MatAnchor,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<section id=\\\"wrapper\\\" class=\\\"d-flex justify-content-center align-items-center\\\">\\n <mat-card class=\\\"mat-elevation-z8 p-4 rounded\\\">\\n <mat-card-header>\\n <mat-card-title class=\\\"text-center\\\">{{ title() }}</mat-card-title>\\n </mat-card-header>\\n <mat-card-content>\\n @if (isLoginMode()) {\\n <form [formGroup]=\\\"signinForm\\\" (ngSubmit)=\\\"signIn()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Usuario</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su usuario\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signin fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSigninFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signinForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Ingresando...\\n } @else {\\n <ng-container>Ingresar <mat-icon>login</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n @if (showRegisterButton()) {\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\n \\u00BFNo tienes cuenta? Reg\\u00EDstrate\\n </button>\\n }\\n </div>\\n </form>\\n } @else {\\n <form [formGroup]=\\\"signupForm\\\" (ngSubmit)=\\\"registerUser()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su nombre\\\" formControlName=\\\"displayName\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Email</mat-label>\\n <input matInput type=\\\"email\\\" placeholder=\\\"Ingrese su email\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signup fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSignupFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signupForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Registrando...\\n } @else {\\n <ng-container>Registrarse <mat-icon>person_add</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\u00BFYa tienes cuenta? Inicia sesi\\u00F3n</button>\\n </div>\\n </form>\\n }\\n @if (errorMessage()) {\\n <div class=\\\"alert alert-danger mt-3\\\" role=\\\"alert\\\">\\n {{ errorMessage() }}\\n </div>\\n }\\n </mat-card-content>\\n @if (hasFooterContent()) {\\n <mat-card-footer>\\n <ng-container *ngTemplateOutlet=\\\"footerContent()\\\"></ng-container>\\n </mat-card-footer>\\n }\\n </mat-card>\\n</section>\\n\", styles: [\"#wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--mdc-theme-primary, #5c5f5c) 0%,var(--mdc-theme-secondary, #79747e) 100%);padding:20px}mat-card{width:100%;max-width:400px;border-radius:12px;box-shadow:0 8px 32px #0000001a}mat-card-header{text-align:center;margin-bottom:20px}mat-card-title{font-size:24px;font-weight:600;color:var(--mdc-theme-on-surface, #1c1b1f)}mat-form-field{width:100%}.w-100{width:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.gap-3{gap:12px}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.mt-3{margin-top:12px}.mt-2{margin-top:8px}.text-center{text-align:center}.p-4{padding:16px}.rounded{border-radius:12px}.alert-danger{background-color:var(--mdc-theme-error-container, #ffdad6);border-color:var(--mdc-theme-error, #ba1a1a);color:var(--mdc-theme-on-error-container, #410002);padding:12px;border-radius:4px;border:1px solid transparent}.row{display:flex;flex-wrap:wrap;margin:0 -15px}.col-xs-12,.col-sm-12,.col-md-12{flex:0 0 100%;max-width:100%;padding:0 15px}.m-t-10{margin-top:10px}.social{display:flex;justify-content:center}mat-button{border-radius:8px}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3VpL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi91aS9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyREFBMkQ7QUFDM0QsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFDVixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7QUF1QmhGLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEtBQUssR0FBRyxLQUFLLENBQVMsT0FBTyxpREFBQyxDQUFDO0lBQy9CLGtCQUFr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QUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7b0JBQ3pFLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzFDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt1R0FoR1UsY0FBYzsyRkFBZCxjQUFjLGdyQ0N2RDNCLDhpSEF5RkEsb3ZDRHBESSxZQUFZLHFNQUNaLG1CQUFtQiw2OEJBQ25CLE9BQU8sb0dBQ1AsYUFBYSw0REFDYixRQUFRLHNEQUNSLFlBQVksNkZBQ1osY0FBYyw2REFDZCxZQUFZLDRMQUNaLFFBQVEsd1ZBQ1IsT0FBTywySUFDUCxTQUFTLHlVQUNULGFBQWE7OzJGQU9KLGNBQWM7a0JBckIxQixTQUFTOytCQUNFLFdBQVcsV0FDWjt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixTQUFTO3FCQUNWLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9wcmVzZW50YXRpb24vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQudHNcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHNpZ25hbCxcbiAgZWZmZWN0LFxuICBjb21wdXRlZCxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRm9ybUdyb3VwLFxuICBGb3JtQnVpbGRlcixcbiAgVmFsaWRhdG9ycyxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgQWJzdHJhY3RDb250cm9sLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBNYXRDYXJkLFxuICBNYXRDYXJkQ29udGVudCxcbiAgTWF0Q2FyZEZvb3RlcixcbiAgTWF0Q2FyZEhlYWRlcixcbiAgTWF0Q2FyZFRpdGxlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QW5jaG9yLCBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTG9naW5Vc2VDYXNlIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vdXNlLWNhc2VzL2xvZ2luLnVzZS1jYXNlJztcbmltcG9ydCB7IFJlZ2lzdGVyVXNlQ2FzZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9yZWdpc3Rlci51c2UtY2FzZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1sb2dpbicsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRDYXJkLFxuICAgIE1hdENhcmRIZWFkZXIsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0Q2FyZFRpdGxlLFxuICAgIE1hdENhcmRDb250ZW50LFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRJbnB1dCxcbiAgICBNYXRJY29uLFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXRDYXJkRm9vdGVyLFxuICAgIE1hdEFuY2hvcixcbiAgXSxcbiAgdGVtcGxhdGVVcmw6IGAuL2xvZ2luLmNvbXBvbmVudC5odG1sYCxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCdMb2dpbicpO1xuICBzaG93UmVnaXN0ZXJCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvLyBBZGRpdGlvbmFsIGZvcm0gY29udHJvbHMgdGhhdCBjYW4gYmUgcGFzc2VkIGZyb20gcGFyZW50IGNvbXBvbmVudHNcbiAgYWRkaXRpb25hbFNpZ25pbkNvbnRyb2xzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgQWJzdHJhY3RDb250cm9sPj4oe30pO1xuICBhZGRpdGlvbmFsU2lnbnVwQ29udHJvbHMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdENvbnRyb2w+Pih7fSk7XG5cbiAgLy8gQWRkaXRpb25hbCBmaWVsZCB0ZW1wbGF0ZXNcbiAgYWRkaXRpb25hbFNpZ25pbkZpZWxkcyA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcbiAgYWRkaXRpb25hbFNpZ251cEZpZWxkcyA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcblxuICAvLyBGb290ZXIgY29udGVudCB0ZW1wbGF0ZVxuICBmb290ZXJDb250ZW50ID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xuXG4gIC8vIENvbXB1dGVkIHNpZ25hbCB0byBjaGVjayBpZiBmb290ZXIgY29udGVudCBleGlzdHNcbiAgaGFzRm9vdGVyQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9vdGVyQ29udGVudCgpICE9PSBudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dpblVzZUNhc2UgPSBpbmplY3QoTG9naW5Vc2VDYXNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWdpc3RlclVzZUNhc2UgPSBpbmplY3QoUmVnaXN0ZXJVc2VDYXNlKTtcblxuICAvLyBBbmd1bGFyIDIwKyBzaWduYWxzXG4gIGlzTG9naW5Nb2RlID0gc2lnbmFsKHRydWUpO1xuICBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBlcnJvck1lc3NhZ2UgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgc2lnbmluRm9ybTogRm9ybUdyb3VwO1xuICBzaWdudXBGb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaWduaW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuICAgICAgcGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNpZ251cEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRpc3BsYXlOYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KV1dLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgY29udHJvbHMgdG8gc2lnbmluIGZvcm1cbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmFkZGl0aW9uYWxTaWduaW5Db250cm9scygpKS5mb3JFYWNoKChba2V5LCBjb250cm9sXSkgPT4ge1xuICAgICAgdGhpcy5zaWduaW5Gb3JtLmFkZENvbnRyb2woa2V5LCBjb250cm9sKTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBhZGRpdGlvbmFsIGNvbnRyb2xzIHRvIHNpZ251cCBmb3JtXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5hZGRpdGlvbmFsU2lnbnVwQ29udHJvbHMoKSkuZm9yRWFjaCgoW2tleSwgY29udHJvbF0pID0+IHtcbiAgICAgIHRoaXMuc2lnbnVwRm9ybS5hZGRDb250cm9sKGtleSwgY29udHJvbCk7XG4gICAgfSk7XG4gIH1cblxuICBzd2l0Y2hNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2dpbk1vZGUuc2V0KCF0aGlzLmlzTG9naW5Nb2RlKCkpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldChudWxsKTtcbiAgfVxuXG4gIHNpZ25JbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaWduaW5Gb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQobnVsbCk7XG5cbiAgICAgIHRoaXMubG9naW5Vc2VDYXNlLmV4ZWN1dGUodGhpcy5zaWduaW5Gb3JtLnZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldCgnRXJyb3IgYWwgaW5pY2lhciBzZXNpw7NuLiBWZXJpZmlxdWUgc3VzIGNyZWRlbmNpYWxlcy4nKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdMb2dpbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlclVzZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2lnbnVwRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KG51bGwpO1xuXG4gICAgICB0aGlzLnJlZ2lzdGVyVXNlQ2FzZS5leGVjdXRlKHRoaXMuc2lnbnVwRm9ybS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy5pc0xvZ2luTW9kZS5zZXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJ0Vycm9yIGFsIHJlZ2lzdHJhciB1c3VhcmlvLiBJbnRlbnRlIG51ZXZhbWVudGUuJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignUmVnaXN0ZXIgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8c2VjdGlvbiBpZD1cIndyYXBwZXJcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8bWF0LWNhcmQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4IHAtNCByb3VuZGVkXCI+XG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgdGl0bGUoKSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICBAaWYgKGlzTG9naW5Nb2RlKCkpIHtcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2lnbmluRm9ybVwiIChuZ1N1Ym1pdCk9XCJzaWduSW4oKVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Vc3VhcmlvPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHN1IHVzdWFyaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNvbnRyYXNlw7FhPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiSW5ncmVzZSBzdSBjb250cmFzZcOxYVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8IS0tIEFkZGl0aW9uYWwgc2lnbmluIGZpZWxkcyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFkZGl0aW9uYWxTaWduaW5GaWVsZHMoKVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIXNpZ25pbkZvcm0udmFsaWQgfHwgaXNMb2FkaW5nKClcIiB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgIEBpZiAoaXNMb2FkaW5nKCkpIHtcbiAgICAgICAgICAgIEluZ3Jlc2FuZG8uLi5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5JbmdyZXNhciA8bWF0LWljb24+bG9naW48L21hdC1pY29uPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtMlwiPlxuICAgICAgICAgIEBpZiAoc2hvd1JlZ2lzdGVyQnV0dG9uKCkpIHtcbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzd2l0Y2hNb2RlKClcIj5cbiAgICAgICAgICAgIMK/Tm8gdGllbmVzIGN1ZW50YT8gUmVnw61zdHJhdGVcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInNpZ251cEZvcm1cIiAobmdTdWJtaXQpPVwicmVnaXN0ZXJVc2VyKClcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Tm9tYnJlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHN1IG5vbWJyZVwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+RW1haWw8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHN1IGVtYWlsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Db250cmFzZcOxYTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIkluZ3Jlc2Ugc3UgY29udHJhc2XDsWFcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHNpZ251cCBmaWVsZHMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsU2lnbnVwRmllbGRzKClcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtM1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFzaWdudXBGb3JtLnZhbGlkIHx8IGlzTG9hZGluZygpXCIgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICBSZWdpc3RyYW5kby4uLlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlJlZ2lzdHJhcnNlIDxtYXQtaWNvbj5wZXJzb25fYWRkPC9tYXQtaWNvbj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzd2l0Y2hNb2RlKClcIj7Cv1lhIHRpZW5lcyBjdWVudGE/IEluaWNpYSBzZXNpw7NuPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgICAgfVxuICAgICAgQGlmIChlcnJvck1lc3NhZ2UoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBtdC0zXCIgcm9sZT1cImFsZXJ0XCI+XG4gICAgICAgIHt7IGVycm9yTWVzc2FnZSgpIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgQGlmIChoYXNGb290ZXJDb250ZW50KCkpIHtcbiAgICA8bWF0LWNhcmQtZm9vdGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlckNvbnRlbnQoKVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxuICAgIH1cbiAgPC9tYXQtY2FyZD5cbjwvc2VjdGlvbj5cbiJdfQ==","// src/lib/presentation/components/index.ts\nexport { LoginComponent } from './login.component';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvbG9naW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvaW5kZXgudHNcbmV4cG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi5jb21wb25lbnQnO1xuIl19","// src/lib/presentation/index.ts\nexport * from './stores';\nexport * from './login';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9wcmVzZW50YXRpb24vaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4nO1xuIl19","import { AuthRepository } from '../domain/repositories/auth.repository';\nimport { AuthHttpRepository } from '../data/repositories/auth-http.repository';\nexport const authProviders = [\n {\n provide: AuthRepository,\n useClass: AuthHttpRepository,\n },\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvcHJvdmlkZXJzL2F1dGgucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWU7SUFDdkM7UUFDRSxPQUFPLEVBQUUsY0FBYztRQUN2QixRQUFRLEVBQUUsa0JBQWtCO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJvdmlkZXJzL2F1dGgucHJvdmlkZXJzLnRzXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBBdXRoSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuLi9kYXRhL3JlcG9zaXRvcmllcy9hdXRoLWh0dHAucmVwb3NpdG9yeSc7XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICB7XG4gICAgcHJvdmlkZTogQXV0aFJlcG9zaXRvcnksXG4gICAgdXNlQ2xhc3M6IEF1dGhIdHRwUmVwb3NpdG9yeSxcbiAgfSxcbl07XG4iXX0=","// src/lib/providers/index.ts\nexport * from './auth.providers';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUE2QjtBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9wcm92aWRlcnMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5wcm92aWRlcnMnO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9hY29udHBsdXMtbmctYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.TokenRepository"],"mappings":"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"}
1
+ {"version":3,"file":"acontplus-ng-auth.mjs","sources":["../tmp-esm2022/lib/repositories/token.repository.js","../tmp-esm2022/lib/services/auth-token.service.js","../tmp-esm2022/lib/services/url-redirect.service.js","../tmp-esm2022/lib/guards/auth.guard.js","../tmp-esm2022/lib/interceptors/auth-redirect.interceptor.js","../tmp-esm2022/lib/domain/models/user.js","../tmp-esm2022/lib/domain/models/index.js","../tmp-esm2022/lib/domain/repositories/auth.repository.js","../tmp-esm2022/lib/domain/repositories/index.js","../tmp-esm2022/lib/domain/index.js","../tmp-esm2022/lib/services/csrf.service.js","../tmp-esm2022/lib/data/repositories/auth-http.repository.js","../tmp-esm2022/lib/data/repositories/index.js","../tmp-esm2022/lib/data/index.js","../tmp-esm2022/lib/ui/stores/auth.store.js","../tmp-esm2022/lib/application/use-cases/login.use-case.js","../tmp-esm2022/lib/application/use-cases/register.use-case.js","../tmp-esm2022/lib/application/use-cases/refresh-token.use-case.js","../tmp-esm2022/lib/application/use-cases/logout.use-case.js","../tmp-esm2022/lib/application/use-cases/index.js","../tmp-esm2022/lib/application/index.js","../tmp-esm2022/lib/ui/stores/index.js","../tmp-esm2022/lib/ui/login/login.component.js","../tmp-esm2022/lib/ui/login/index.js","../tmp-esm2022/lib/ui/index.js","../tmp-esm2022/lib/providers/auth.providers.js","../tmp-esm2022/lib/providers/index.js","../tmp-esm2022/acontplus-ng-auth.js"],"sourcesContent":["import { Injectable, inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { jwtDecode } from 'jwt-decode';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class TokenRepository {\n environment = inject(ENVIRONMENT);\n platformId = inject(PLATFORM_ID);\n saveTokens(tokens, rememberMe = false) {\n if (isPlatformBrowser(this.platformId)) {\n this.setToken(tokens.token, rememberMe);\n this.setRefreshToken(tokens.refreshToken, rememberMe);\n }\n }\n getAccessToken() {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return (localStorage.getItem(this.environment.tokenKey) ||\n sessionStorage.getItem(this.environment.tokenKey));\n }\n getRefreshToken() {\n if (!isPlatformBrowser(this.platformId)) {\n return null;\n }\n return (localStorage.getItem(this.environment.refreshTokenKey) ||\n sessionStorage.getItem(this.environment.refreshTokenKey));\n }\n setToken(token, rememberMe = false) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (rememberMe) {\n localStorage.setItem(this.environment.tokenKey, token);\n }\n else {\n sessionStorage.setItem(this.environment.tokenKey, token);\n }\n }\n setRefreshToken(refreshToken, rememberMe = false) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (rememberMe) {\n localStorage.setItem(this.environment.refreshTokenKey, refreshToken);\n }\n else {\n sessionStorage.setItem(this.environment.refreshTokenKey, refreshToken);\n }\n }\n clearTokens() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n localStorage.removeItem(this.environment.tokenKey);\n localStorage.removeItem(this.environment.refreshTokenKey);\n sessionStorage.removeItem(this.environment.tokenKey);\n sessionStorage.removeItem(this.environment.refreshTokenKey);\n }\n isAuthenticated() {\n const accessToken = this.getAccessToken();\n if (!accessToken) {\n return false;\n }\n try {\n const decodedAccessToken = jwtDecode(accessToken);\n const accessExpiration = Number(decodedAccessToken.exp);\n const currentTimeUTC = Math.floor(Date.now() / 1000);\n return accessExpiration > currentTimeUTC;\n }\n catch {\n return false;\n }\n }\n needsRefresh() {\n const accessToken = this.getAccessToken();\n if (!accessToken) {\n return false;\n }\n try {\n const decodedToken = jwtDecode(accessToken);\n const expiration = Number(decodedToken.exp);\n const currentTimeUTC = Math.floor(Date.now() / 1000);\n const timeUntilExpiry = expiration - currentTimeUTC;\n return timeUntilExpiry <= 300; // 5 minutes\n }\n catch {\n return false;\n }\n }\n getTokenPayload() {\n const token = this.getAccessToken();\n if (!token)\n return null;\n try {\n return jwtDecode(token);\n }\n catch (error) {\n return null;\n }\n }\n /**\n * Determines if tokens are stored persistently (localStorage) vs session (sessionStorage)\n */\n isRememberMeEnabled() {\n if (!isPlatformBrowser(this.platformId)) {\n return false;\n }\n // Check if tokens exist in localStorage (persistent storage)\n const tokenInLocalStorage = localStorage.getItem(this.environment.tokenKey);\n const refreshTokenInLocalStorage = localStorage.getItem(this.environment.refreshTokenKey);\n return !!(tokenInLocalStorage || refreshTokenInLocalStorage);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: TokenRepository, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9yZXBvc2l0b3JpZXMvdG9rZW4ucmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBS25ELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV6QyxVQUFVLENBQUMsTUFBa0IsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUMvQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sQ0FDTCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQy9DLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFD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QkFBMEIsQ0FBQyxDQUFDO0lBQy9ELENBQUM7dUdBM0hVLGVBQWU7MkdBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgand0RGVjb2RlIH0gZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVG9rZW5SZXBvc2l0b3J5IHtcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgc2F2ZVRva2Vucyh0b2tlbnM6IEF1dGhUb2tlbnMsIHJlbWVtYmVyTWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnNldFRva2VuKHRva2Vucy50b2tlbiwgcmVtZW1iZXJNZSk7XG4gICAgICB0aGlzLnNldFJlZnJlc2hUb2tlbih0b2tlbnMucmVmcmVzaFRva2VuLCByZW1lbWJlck1lKTtcbiAgICB9XG4gIH1cblxuICBnZXRBY2Nlc3NUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5lbnZpcm9ubWVudC50b2tlbktleSkgfHxcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5lbnZpcm9ubWVudC50b2tlbktleSlcbiAgICApO1xuICB9XG5cbiAgZ2V0UmVmcmVzaFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmVudmlyb25tZW50LnJlZnJlc2hUb2tlbktleSkgfHxcbiAgICAgIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5lbnZpcm9ubWVudC5yZWZyZXNoVG9rZW5LZXkpXG4gICAgKTtcbiAgfVxuXG4gIHNldFRva2VuKHRva2VuOiBzdHJpbmcsIHJlbWVtYmVyTWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5lbnZpcm9ubWVudC50b2tlbktleSwgdG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXksIHRva2VuKTtcbiAgICB9XG4gIH1cblxuICBzZXRSZWZyZXNoVG9rZW4ocmVmcmVzaFRva2VuOiBzdHJpbmcsIHJlbWVtYmVyTWUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVtZW1iZXJNZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5lbnZpcm9ubWVudC5yZWZyZXNoVG9rZW5LZXksIHJlZnJlc2hUb2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5lbnZpcm9ubWVudC5yZWZyZXNoVG9rZW5LZXksIHJlZnJlc2hUb2tlbik7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJUb2tlbnMoKTogdm9pZCB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQucmVmcmVzaFRva2VuS2V5KTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuZW52aXJvbm1lbnQudG9rZW5LZXkpO1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5lbnZpcm9ubWVudC5yZWZyZXNoVG9rZW5LZXkpO1xuICB9XG5cbiAgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkQWNjZXNzVG9rZW4gPSBqd3REZWNvZGUoYWNjZXNzVG9rZW4pO1xuICAgICAgY29uc3QgYWNjZXNzRXhwaXJhdGlvbiA9IE51bWJlcihkZWNvZGVkQWNjZXNzVG9rZW4uZXhwKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRUaW1lVVRDID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XG5cbiAgICAgIHJldHVybiBhY2Nlc3NFeHBpcmF0aW9uID4gY3VycmVudFRpbWVVVEM7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmVlZHNSZWZyZXNoKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy5nZXRBY2Nlc3NUb2tlbigpO1xuICAgIGlmICghYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gand0RGVjb2RlKGFjY2Vzc1Rva2VuKTtcbiAgICAgIGNvbnN0IGV4cGlyYXRpb24gPSBOdW1iZXIoZGVjb2RlZFRva2VuLmV4cCk7XG4gICAgICBjb25zdCBjdXJyZW50VGltZVVUQyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICAgICAgY29uc3QgdGltZVVudGlsRXhwaXJ5ID0gZXhwaXJhdGlvbiAtIGN1cnJlbnRUaW1lVVRDO1xuXG4gICAgICByZXR1cm4gdGltZVVudGlsRXhwaXJ5IDw9IDMwMDsgLy8gNSBtaW51dGVzXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0VG9rZW5QYXlsb2FkKCk6IGFueSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuIG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGp3dERlY29kZSh0b2tlbik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRva2VucyBhcmUgc3RvcmVkIHBlcnNpc3RlbnRseSAobG9jYWxTdG9yYWdlKSB2cyBzZXNzaW9uIChzZXNzaW9uU3RvcmFnZSlcbiAgICovXG4gIGlzUmVtZW1iZXJNZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdG9rZW5zIGV4aXN0IGluIGxvY2FsU3RvcmFnZSAocGVyc2lzdGVudCBzdG9yYWdlKVxuICAgIGNvbnN0IHRva2VuSW5Mb2NhbFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmVudmlyb25tZW50LnRva2VuS2V5KTtcbiAgICBjb25zdCByZWZyZXNoVG9rZW5JbkxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuZW52aXJvbm1lbnQucmVmcmVzaFRva2VuS2V5KTtcblxuICAgIHJldHVybiAhISh0b2tlbkluTG9jYWxTdG9yYWdlIHx8IHJlZnJlc2hUb2tlbkluTG9jYWxTdG9yYWdlKTtcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../repositories/token.repository\";\nexport class AuthTokenService {\n tokenRepository;\n constructor(tokenRepository) {\n this.tokenRepository = tokenRepository;\n }\n getToken() {\n return this.tokenRepository.getAccessToken();\n }\n isAuthenticated() {\n return this.tokenRepository.isAuthenticated();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, deps: [{ token: i1.TokenRepository }], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthTokenService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.TokenRepository }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC10b2tlbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3NlcnZpY2VzL2F1dGgtdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUNQO0lBQXBCLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFHLENBQUM7SUFFeEQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNoRCxDQUFDO3VHQVRVLGdCQUFnQjsyR0FBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVG9rZW5Qcm92aWRlciB9IGZyb20gJ0BhY29udHBsdXMvbmctaW5mcmFzdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgVG9rZW5SZXBvc2l0b3J5IH0gZnJvbSAnLi4vcmVwb3NpdG9yaWVzL3Rva2VuLnJlcG9zaXRvcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEF1dGhUb2tlblNlcnZpY2UgaW1wbGVtZW50cyBJVG9rZW5Qcm92aWRlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW5SZXBvc2l0b3J5OiBUb2tlblJlcG9zaXRvcnkpIHt9XG5cbiAgZ2V0VG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldEFjY2Vzc1Rva2VuKCk7XG4gIH1cblxuICBpc0F1dGhlbnRpY2F0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5SZXBvc2l0b3J5LmlzQXV0aGVudGljYXRlZCgpO1xuICB9XG59XG4iXX0=","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\n/**\n * Service to manage URL redirection after authentication\n * Stores the intended URL when session is lost and redirects to it after successful login\n * SSR-compatible by checking platform before accessing sessionStorage\n */\nexport class UrlRedirectService {\n REDIRECT_URL_KEY = 'acp_redirect_url';\n EXCLUDED_ROUTES = ['/login', '/register', '/forgot-password', '/reset-password'];\n router = inject(Router);\n platformId = inject(PLATFORM_ID);\n document = inject(DOCUMENT);\n /**\n * Stores the current URL for later redirection\n * @param url - The URL to store (defaults to current URL)\n */\n storeIntendedUrl(url) {\n // Only store in browser environment\n if (!this.isBrowser()) {\n return;\n }\n const urlToStore = url || this.router.url;\n // Don't store authentication-related routes\n if (this.isExcludedRoute(urlToStore)) {\n return;\n }\n // Don't store URLs with query parameters that might contain sensitive data\n const urlWithoutParams = urlToStore.split('?')[0];\n this.getSessionStorage()?.setItem(this.REDIRECT_URL_KEY, urlWithoutParams);\n }\n /**\n * Gets the stored intended URL\n * @returns The stored URL or null if none exists\n */\n getIntendedUrl() {\n if (!this.isBrowser()) {\n return null;\n }\n return this.getSessionStorage()?.getItem(this.REDIRECT_URL_KEY) || null;\n }\n /**\n * Redirects to the stored URL and clears it from storage\n * @param defaultRoute - The default route to navigate to if no URL is stored\n */\n redirectToIntendedUrl(defaultRoute = '/') {\n const intendedUrl = this.getIntendedUrl();\n if (intendedUrl && !this.isExcludedRoute(intendedUrl)) {\n this.clearIntendedUrl();\n this.router.navigateByUrl(intendedUrl);\n }\n else {\n this.router.navigate([defaultRoute]);\n }\n }\n /**\n * Clears the stored intended URL\n */\n clearIntendedUrl() {\n if (!this.isBrowser()) {\n return;\n }\n this.getSessionStorage()?.removeItem(this.REDIRECT_URL_KEY);\n }\n /**\n * Checks if a URL should be excluded from redirection\n * @param url - The URL to check\n * @returns True if the URL should be excluded\n */\n isExcludedRoute(url) {\n return this.EXCLUDED_ROUTES.some(route => url.includes(route));\n }\n /**\n * Stores the current URL if it's not an excluded route\n * Useful for guards and interceptors\n */\n storeCurrentUrlIfAllowed() {\n const currentUrl = this.router.url;\n if (!this.isExcludedRoute(currentUrl)) {\n this.storeIntendedUrl(currentUrl);\n }\n }\n /**\n * Checks if we're running in a browser environment\n * @returns True if running in browser, false if SSR\n */\n isBrowser() {\n return isPlatformBrowser(this.platformId);\n }\n /**\n * Safely gets sessionStorage reference\n * @returns sessionStorage object or null if not available\n */\n getSessionStorage() {\n if (!this.isBrowser()) {\n return null;\n }\n try {\n return this.document.defaultView?.sessionStorage || null;\n }\n catch {\n // Handle cases where sessionStorage might be disabled\n return null;\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: UrlRedirectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: UrlRedirectService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: UrlRedirectService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLXJlZGlyZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvc2VydmljZXMvdXJsLXJlZGlyZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRTlEOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUM7SUFDdEMsZUFBZSxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLEdBQVk7UUFDM0Isb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUUxQyw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTztRQUNULENBQUM7UUFFRCwyRUFBMkU7UUFDM0UsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLGVBQXVCLEdBQUc7UUFDOUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFDLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxlQUFlLENBQUMsR0FBVztRQUNqQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0I7UUFDdEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxTQUFTO1FBQ2YsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLElBQUksSUFBSSxDQUFDO1FBQzNELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxzREFBc0Q7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzt1R0E1R1Usa0JBQWtCOzJHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gbWFuYWdlIFVSTCByZWRpcmVjdGlvbiBhZnRlciBhdXRoZW50aWNhdGlvblxuICogU3RvcmVzIHRoZSBpbnRlbmRlZCBVUkwgd2hlbiBzZXNzaW9uIGlzIGxvc3QgYW5kIHJlZGlyZWN0cyB0byBpdCBhZnRlciBzdWNjZXNzZnVsIGxvZ2luXG4gKiBTU1ItY29tcGF0aWJsZSBieSBjaGVja2luZyBwbGF0Zm9ybSBiZWZvcmUgYWNjZXNzaW5nIHNlc3Npb25TdG9yYWdlXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBVcmxSZWRpcmVjdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFJFRElSRUNUX1VSTF9LRVkgPSAnYWNwX3JlZGlyZWN0X3VybCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRVhDTFVERURfUk9VVEVTID0gWycvbG9naW4nLCAnL3JlZ2lzdGVyJywgJy9mb3Jnb3QtcGFzc3dvcmQnLCAnL3Jlc2V0LXBhc3N3b3JkJ107XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgY3VycmVudCBVUkwgZm9yIGxhdGVyIHJlZGlyZWN0aW9uXG4gICAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIHRvIHN0b3JlIChkZWZhdWx0cyB0byBjdXJyZW50IFVSTClcbiAgICovXG4gIHN0b3JlSW50ZW5kZWRVcmwodXJsPzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gT25seSBzdG9yZSBpbiBicm93c2VyIGVudmlyb25tZW50XG4gICAgaWYgKCF0aGlzLmlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsVG9TdG9yZSA9IHVybCB8fCB0aGlzLnJvdXRlci51cmw7XG5cbiAgICAvLyBEb24ndCBzdG9yZSBhdXRoZW50aWNhdGlvbi1yZWxhdGVkIHJvdXRlc1xuICAgIGlmICh0aGlzLmlzRXhjbHVkZWRSb3V0ZSh1cmxUb1N0b3JlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERvbid0IHN0b3JlIFVSTHMgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzIHRoYXQgbWlnaHQgY29udGFpbiBzZW5zaXRpdmUgZGF0YVxuICAgIGNvbnN0IHVybFdpdGhvdXRQYXJhbXMgPSB1cmxUb1N0b3JlLnNwbGl0KCc/JylbMF07XG4gICAgdGhpcy5nZXRTZXNzaW9uU3RvcmFnZSgpPy5zZXRJdGVtKHRoaXMuUkVESVJFQ1RfVVJMX0tFWSwgdXJsV2l0aG91dFBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc3RvcmVkIGludGVuZGVkIFVSTFxuICAgKiBAcmV0dXJucyBUaGUgc3RvcmVkIFVSTCBvciBudWxsIGlmIG5vbmUgZXhpc3RzXG4gICAqL1xuICBnZXRJbnRlbmRlZFVybCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRTZXNzaW9uU3RvcmFnZSgpPy5nZXRJdGVtKHRoaXMuUkVESVJFQ1RfVVJMX0tFWSkgfHwgbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWRpcmVjdHMgdG8gdGhlIHN0b3JlZCBVUkwgYW5kIGNsZWFycyBpdCBmcm9tIHN0b3JhZ2VcbiAgICogQHBhcmFtIGRlZmF1bHRSb3V0ZSAtIFRoZSBkZWZhdWx0IHJvdXRlIHRvIG5hdmlnYXRlIHRvIGlmIG5vIFVSTCBpcyBzdG9yZWRcbiAgICovXG4gIHJlZGlyZWN0VG9JbnRlbmRlZFVybChkZWZhdWx0Um91dGU6IHN0cmluZyA9ICcvJyk6IHZvaWQge1xuICAgIGNvbnN0IGludGVuZGVkVXJsID0gdGhpcy5nZXRJbnRlbmRlZFVybCgpO1xuXG4gICAgaWYgKGludGVuZGVkVXJsICYmICF0aGlzLmlzRXhjbHVkZWRSb3V0ZShpbnRlbmRlZFVybCkpIHtcbiAgICAgIHRoaXMuY2xlYXJJbnRlbmRlZFVybCgpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChpbnRlbmRlZFVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtkZWZhdWx0Um91dGVdKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzdG9yZWQgaW50ZW5kZWQgVVJMXG4gICAqL1xuICBjbGVhckludGVuZGVkVXJsKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmdldFNlc3Npb25TdG9yYWdlKCk/LnJlbW92ZUl0ZW0odGhpcy5SRURJUkVDVF9VUkxfS0VZKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBVUkwgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gcmVkaXJlY3Rpb25cbiAgICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gY2hlY2tcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgVVJMIHNob3VsZCBiZSBleGNsdWRlZFxuICAgKi9cbiAgcHJpdmF0ZSBpc0V4Y2x1ZGVkUm91dGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5FWENMVURFRF9ST1VURVMuc29tZShyb3V0ZSA9PiB1cmwuaW5jbHVkZXMocm91dGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZXMgdGhlIGN1cnJlbnQgVVJMIGlmIGl0J3Mgbm90IGFuIGV4Y2x1ZGVkIHJvdXRlXG4gICAqIFVzZWZ1bCBmb3IgZ3VhcmRzIGFuZCBpbnRlcmNlcHRvcnNcbiAgICovXG4gIHN0b3JlQ3VycmVudFVybElmQWxsb3dlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGlmICghdGhpcy5pc0V4Y2x1ZGVkUm91dGUoY3VycmVudFVybCkpIHtcbiAgICAgIHRoaXMuc3RvcmVJbnRlbmRlZFVybChjdXJyZW50VXJsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyIGVudmlyb25tZW50XG4gICAqIEByZXR1cm5zIFRydWUgaWYgcnVubmluZyBpbiBicm93c2VyLCBmYWxzZSBpZiBTU1JcbiAgICovXG4gIHByaXZhdGUgaXNCcm93c2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhZmVseSBnZXRzIHNlc3Npb25TdG9yYWdlIHJlZmVyZW5jZVxuICAgKiBAcmV0dXJucyBzZXNzaW9uU3RvcmFnZSBvYmplY3Qgb3IgbnVsbCBpZiBub3QgYXZhaWxhYmxlXG4gICAqL1xuICBwcml2YXRlIGdldFNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/LnNlc3Npb25TdG9yYWdlIHx8IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgc2Vzc2lvblN0b3JhZ2UgbWlnaHQgYmUgZGlzYWJsZWRcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthTokenService } from '../services/auth-token.service';\nimport { UrlRedirectService } from '../services/url-redirect.service';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nexport const authGuard = (_route, state) => {\n const authService = inject(AuthTokenService);\n const router = inject(Router);\n const urlRedirectService = inject(UrlRedirectService);\n const environment = inject(ENVIRONMENT);\n if (authService.isAuthenticated()) {\n return true;\n }\n // Store the current URL for redirection after login\n urlRedirectService.storeIntendedUrl(state.url);\n // Redirect to login page (configurable via environment)\n router.navigate([environment.loginRoute]);\n return false;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBaUIsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7SUFDeEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvQyx3REFBd0Q7SUFDeEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUZuLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQXV0aFRva2VuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2F1dGgtdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBVcmxSZWRpcmVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91cmwtcmVkaXJlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJ0BhY29udHBsdXMvbmctY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IGF1dGhHdWFyZDogQ2FuQWN0aXZhdGVGbiA9IChfcm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhUb2tlblNlcnZpY2UpO1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgdXJsUmVkaXJlY3RTZXJ2aWNlID0gaW5qZWN0KFVybFJlZGlyZWN0U2VydmljZSk7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcblxuICBpZiAoYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFN0b3JlIHRoZSBjdXJyZW50IFVSTCBmb3IgcmVkaXJlY3Rpb24gYWZ0ZXIgbG9naW5cbiAgdXJsUmVkaXJlY3RTZXJ2aWNlLnN0b3JlSW50ZW5kZWRVcmwoc3RhdGUudXJsKTtcblxuICAvLyBSZWRpcmVjdCB0byBsb2dpbiBwYWdlIChjb25maWd1cmFibGUgdmlhIGVudmlyb25tZW50KVxuICByb3V0ZXIubmF2aWdhdGUoW2Vudmlyb25tZW50LmxvZ2luUm91dGVdKTtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbiJdfQ==","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport { UrlRedirectService } from '../services/url-redirect.service';\nimport { AuthTokenService } from '../services/auth-token.service';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\n/**\n * Interceptor that handles authentication errors and manages URL redirection\n * Captures the current URL when a 401 error occurs and redirects to login\n */\nexport const authRedirectInterceptor = (req, next) => {\n const router = inject(Router);\n const urlRedirectService = inject(UrlRedirectService);\n const authTokenService = inject(AuthTokenService);\n const environment = inject(ENVIRONMENT);\n return next(req).pipe(catchError((error) => {\n // Handle 401 Unauthorized errors\n if (error.status === 401) {\n // Only store and redirect if user was previously authenticated\n // This prevents redirect loops and handles session expiry scenarios\n if (authTokenService.isAuthenticated()) {\n // Store the current URL for redirection after re-authentication\n urlRedirectService.storeCurrentUrlIfAllowed();\n // Navigate to login page\n router.navigate([environment.loginRoute]);\n }\n }\n // Re-throw the error so other error handlers can process it\n return throwError(() => error);\n }));\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1yZWRpcmVjdC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC1yZWRpcmVjdC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXNCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ3RFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDbkIsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1FBQ3RDLGlDQUFpQztRQUNqQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDekIsK0RBQStEO1lBQy9ELG9FQUFvRTtZQUNwRSxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLGdFQUFnRTtnQkFDaEUsa0JBQWtCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFFOUMseUJBQXlCO2dCQUN6QixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBJbnRlcmNlcHRvckZuLCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVcmxSZWRpcmVjdFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91cmwtcmVkaXJlY3Quc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aC10b2tlbi5zZXJ2aWNlJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb25maWcnO1xuXG4vKipcbiAqIEludGVyY2VwdG9yIHRoYXQgaGFuZGxlcyBhdXRoZW50aWNhdGlvbiBlcnJvcnMgYW5kIG1hbmFnZXMgVVJMIHJlZGlyZWN0aW9uXG4gKiBDYXB0dXJlcyB0aGUgY3VycmVudCBVUkwgd2hlbiBhIDQwMSBlcnJvciBvY2N1cnMgYW5kIHJlZGlyZWN0cyB0byBsb2dpblxuICovXG5leHBvcnQgY29uc3QgYXV0aFJlZGlyZWN0SW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3QgdXJsUmVkaXJlY3RTZXJ2aWNlID0gaW5qZWN0KFVybFJlZGlyZWN0U2VydmljZSk7XG4gIGNvbnN0IGF1dGhUb2tlblNlcnZpY2UgPSBpbmplY3QoQXV0aFRva2VuU2VydmljZSk7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcblxuICByZXR1cm4gbmV4dChyZXEpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyBIYW5kbGUgNDAxIFVuYXV0aG9yaXplZCBlcnJvcnNcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAvLyBPbmx5IHN0b3JlIGFuZCByZWRpcmVjdCBpZiB1c2VyIHdhcyBwcmV2aW91c2x5IGF1dGhlbnRpY2F0ZWRcbiAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyByZWRpcmVjdCBsb29wcyBhbmQgaGFuZGxlcyBzZXNzaW9uIGV4cGlyeSBzY2VuYXJpb3NcbiAgICAgICAgaWYgKGF1dGhUb2tlblNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkpIHtcbiAgICAgICAgICAvLyBTdG9yZSB0aGUgY3VycmVudCBVUkwgZm9yIHJlZGlyZWN0aW9uIGFmdGVyIHJlLWF1dGhlbnRpY2F0aW9uXG4gICAgICAgICAgdXJsUmVkaXJlY3RTZXJ2aWNlLnN0b3JlQ3VycmVudFVybElmQWxsb3dlZCgpO1xuXG4gICAgICAgICAgLy8gTmF2aWdhdGUgdG8gbG9naW4gcGFnZVxuICAgICAgICAgIHJvdXRlci5uYXZpZ2F0ZShbZW52aXJvbm1lbnQubG9naW5Sb3V0ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlLXRocm93IHRoZSBlcnJvciBzbyBvdGhlciBlcnJvciBoYW5kbGVycyBjYW4gcHJvY2VzcyBpdFxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgIH0pXG4gICk7XG59O1xuIl19","export class User {\n id;\n email;\n displayName;\n _refreshToken;\n constructor(id, email, displayName, _refreshToken) {\n this.id = id;\n this.email = email;\n this.displayName = displayName;\n this._refreshToken = _refreshToken;\n }\n get refreshToken() {\n return this._refreshToken;\n }\n updateRefreshToken(token) {\n this._refreshToken = token;\n }\n clearRefreshToken() {\n this._refreshToken = undefined;\n }\n static create(email, displayName, _password) {\n const id = Date.now(); // Generate a numeric ID\n return new User(id, email, displayName);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9kb21haW4vbW9kZWxzL3VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE1BQU0sT0FBTyxJQUFJO0lBRUc7SUFDQTtJQUNBO0lBQ1I7SUFKVixZQUNrQixFQUFVLEVBQ1YsS0FBYSxFQUNiLFdBQW1CLEVBQzNCLGFBQXNCO1FBSGQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBUztJQUM3QixDQUFDO0lBRUosSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxTQUFpQjtRQUNqRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7UUFDL0MsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL21vZGVscy91c2VyLnRzXG5pbXBvcnQgeyBCYXNlRW50aXR5IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2dpblJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICByZW1lbWJlck1lPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hUb2tlblJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlclJlc3BvbnNlIHtcbiAgdG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBVc2VyIGltcGxlbWVudHMgQmFzZUVudGl0eSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBpZDogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSBlbWFpbDogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBkaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIHByaXZhdGUgX3JlZnJlc2hUb2tlbj86IHN0cmluZyxcbiAgKSB7fVxuXG4gIGdldCByZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmcmVzaFRva2VuO1xuICB9XG5cbiAgdXBkYXRlUmVmcmVzaFRva2VuKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZyZXNoVG9rZW4gPSB0b2tlbjtcbiAgfVxuXG4gIGNsZWFyUmVmcmVzaFRva2VuKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZnJlc2hUb2tlbiA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoZW1haWw6IHN0cmluZywgZGlzcGxheU5hbWU6IHN0cmluZywgX3Bhc3N3b3JkOiBzdHJpbmcpOiBVc2VyIHtcbiAgICBjb25zdCBpZCA9IERhdGUubm93KCk7IC8vIEdlbmVyYXRlIGEgbnVtZXJpYyBJRFxuICAgIHJldHVybiBuZXcgVXNlcihpZCwgZW1haWwsIGRpc3BsYXlOYW1lKTtcbiAgfVxufVxuIl19","// src/lib/domain/models/index.ts\nexport * from './user';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL21vZGVscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2RvbWFpbi9tb2RlbHMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vdXNlcic7XG4iXX0=","export class AuthRepository {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBZ0IsY0FBYztDQUtuQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9hdXRoLnJlcG9zaXRvcnkudHNcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXIsIExvZ2luUmVxdWVzdCwgUmVnaXN0ZXJSZXF1ZXN0LCBSZWZyZXNoVG9rZW5SZXF1ZXN0IH0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xuaW1wb3J0IHsgQXV0aFRva2VucyB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdXRoUmVwb3NpdG9yeSB7XG4gIGFic3RyYWN0IGxvZ2luKHJlcXVlc3Q6IExvZ2luUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz47XG4gIGFic3RyYWN0IHJlZ2lzdGVyKHJlcXVlc3Q6IFJlZ2lzdGVyUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz47XG4gIGFic3RyYWN0IHJlZnJlc2hUb2tlbihyZXF1ZXN0OiBSZWZyZXNoVG9rZW5SZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPjtcbiAgYWJzdHJhY3QgbG9nb3V0KGVtYWlsOiBzdHJpbmcsIHJlZnJlc2hUb2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cbiJdfQ==","// src/lib/domain/repositories/index.ts\nexport * from './auth.repository';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7QUFDdkMsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZG9tYWluL3JlcG9zaXRvcmllcy9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnJlcG9zaXRvcnknO1xuIl19","// src/lib/domain/index.ts\nexport * from './models';\nexport * from './repositories';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZG9tYWluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9kb21haW4vaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwb3NpdG9yaWVzJztcbiJdfQ==","// src/lib/services/csrf.service.ts\nimport { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ENVIRONMENT } from '@acontplus/ng-config';\nimport * as i0 from \"@angular/core\";\nexport class CsrfService {\n http = inject(HttpClient);\n environment = inject(ENVIRONMENT);\n csrfToken = null;\n /**\n * Get CSRF token, fetching it if not available\n */\n async getCsrfToken() {\n if (this.csrfToken) {\n return this.csrfToken;\n }\n try {\n const response = await this.http\n .get(`${this.environment.apiBaseUrl}/csrf-token`)\n .toPromise();\n this.csrfToken = response?.csrfToken || null;\n return this.csrfToken || '';\n }\n catch {\n // If CSRF endpoint fails, return empty token\n // Server should handle missing CSRF tokens appropriately\n return '';\n }\n }\n /**\n * Clear stored CSRF token (useful on logout)\n */\n clearCsrfToken() {\n this.csrfToken = null;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: CsrfService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NyZi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3NlcnZpY2VzL2NzcmYuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLFdBQVc7SUFDZCxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFFeEM7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUk7aUJBQzdCLEdBQUcsQ0FBd0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsYUFBYSxDQUFDO2lCQUN2RSxTQUFTLEVBQUUsQ0FBQztZQUVmLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLFNBQVMsSUFBSSxJQUFJLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsNkNBQTZDO1lBQzdDLHlEQUF5RDtZQUN6RCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzt1R0FoQ1UsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL3NlcnZpY2VzL2NzcmYuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICdAYWNvbnRwbHVzL25nLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDc3JmU2VydmljZSB7XG4gIHByaXZhdGUgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVCk7XG4gIHByaXZhdGUgY3NyZlRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogR2V0IENTUkYgdG9rZW4sIGZldGNoaW5nIGl0IGlmIG5vdCBhdmFpbGFibGVcbiAgICovXG4gIGFzeW5jIGdldENzcmZUb2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmNzcmZUb2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMuY3NyZlRva2VuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PHsgY3NyZlRva2VuOiBzdHJpbmcgfT4oYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlCYXNlVXJsfS9jc3JmLXRva2VuYClcbiAgICAgICAgLnRvUHJvbWlzZSgpO1xuXG4gICAgICB0aGlzLmNzcmZUb2tlbiA9IHJlc3BvbnNlPy5jc3JmVG9rZW4gfHwgbnVsbDtcbiAgICAgIHJldHVybiB0aGlzLmNzcmZUb2tlbiB8fCAnJztcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIElmIENTUkYgZW5kcG9pbnQgZmFpbHMsIHJldHVybiBlbXB0eSB0b2tlblxuICAgICAgLy8gU2VydmVyIHNob3VsZCBoYW5kbGUgbWlzc2luZyBDU1JGIHRva2VucyBhcHByb3ByaWF0ZWx5XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHN0b3JlZCBDU1JGIHRva2VuICh1c2VmdWwgb24gbG9nb3V0KVxuICAgKi9cbiAgY2xlYXJDc3JmVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy5jc3JmVG9rZW4gPSBudWxsO1xuICB9XG59XG4iXX0=","// src/lib/data/repositories/auth-http.repository.ts\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { map, from } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { AuthTokens } from '@acontplus/core';\nimport { AUTH_API } from '@acontplus/ng-config';\nimport { CsrfService } from '../../services/csrf.service';\nimport * as i0 from \"@angular/core\";\nfunction getDeviceInfo() {\n return `${navigator.platform ?? 'Unknown'} - ${navigator.userAgent}`;\n}\nexport class AuthHttpRepository extends AuthRepository {\n http = inject(HttpClient);\n csrfService = inject(CsrfService);\n URL = `${AUTH_API.ACCOUNT}`;\n login(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http.post(`${this.URL}login`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })));\n }\n register(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http\n .post(`${this.URL}register`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })\n .pipe(map(response => new AuthTokens(response.token, response.refreshToken)))));\n }\n refreshToken(request) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http\n .post(`${this.URL}refresh`, request, {\n headers: {\n 'Device-Info': getDeviceInfo(),\n 'X-CSRF-Token': csrfToken,\n },\n withCredentials: true,\n })\n .pipe(map(response => new AuthTokens(response.token, response.refreshToken)))));\n }\n logout(email, refreshToken) {\n return from(this.csrfService.getCsrfToken()).pipe(switchMap(csrfToken => this.http.post(`${this.URL}logout`, { email, refreshToken: refreshToken || undefined }, {\n headers: { 'X-CSRF-Token': csrfToken },\n withCredentials: true, // Ensure cookies are sent\n })));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthHttpRepository, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1odHRwLnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9yZXBvc2l0b3JpZXMvYXV0aC1odHRwLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUUxRCxTQUFTLGFBQWE7SUFDcEIsT0FBTyxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksU0FBUyxNQUFNLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN2RSxDQUFDO0FBS0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFDbkMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUU3QyxLQUFLLENBQUMsT0FBcUI7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDL0MsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRTtZQUN0RCxPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLGFBQWEsRUFBRTtnQkFDOUIsY0FBYyxFQUFFLFNBQVM7YUFDMUI7WUFDRCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLElBQUk7YUFDTixJQUFJLENBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sRUFBRTtZQUN0RCxPQUFPLEVBQUU7Z0JBQ1AsYUFBYSxFQUFFLGFBQWEsRUFBRTtnQkFDOUIsY0FBYyxFQUFFLFNBQVM7YUFDMUI7WUFDRCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQ3ZFLENBQ0osQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE0QjtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLElBQUk7YUFDTixJQUFJLENBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQy9DLE9BQU8sRUFBRTtnQkFDUCxhQUFhLEVBQUUsYUFBYSxFQUFFO2dCQUM5QixjQUFjLEVBQUUsU0FBUzthQUMxQjtZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWEsRUFBRSxZQUFvQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFlBQVksSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUM1RixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFO1lBQ3RDLGVBQWUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCO1NBQ2xELENBQUMsQ0FDSCxDQUNGLENBQUM7SUFDSixDQUFDO3VHQTlEVSxrQkFBa0I7MkdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9kYXRhL3JlcG9zaXRvcmllcy9hdXRoLWh0dHAucmVwb3NpdG9yeS50c1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IExvZ2luUmVxdWVzdCwgUmVnaXN0ZXJSZXF1ZXN0LCBSZWZyZXNoVG9rZW5SZXF1ZXN0LCBSZWdpc3RlclJlc3BvbnNlLCBVc2VyIH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy91c2VyJztcbmltcG9ydCB7IEF1dGhUb2tlbnMgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQVVUSF9BUEkgfSBmcm9tICdAYWNvbnRwbHVzL25nLWNvbmZpZyc7XG5pbXBvcnQgeyBDc3JmU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NzcmYuc2VydmljZSc7XG5cbmZ1bmN0aW9uIGdldERldmljZUluZm8oKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke25hdmlnYXRvci5wbGF0Zm9ybSA/PyAnVW5rbm93bid9IC0gJHtuYXZpZ2F0b3IudXNlckFnZW50fWA7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoSHR0cFJlcG9zaXRvcnkgZXh0ZW5kcyBBdXRoUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjc3JmU2VydmljZSA9IGluamVjdChDc3JmU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgVVJMID0gYCR7QVVUSF9BUEkuQUNDT1VOVH1gO1xuXG4gIGxvZ2luKHJlcXVlc3Q6IExvZ2luUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY3NyZlNlcnZpY2UuZ2V0Q3NyZlRva2VuKCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY3NyZlRva2VuID0+XG4gICAgICAgIHRoaXMuaHR0cC5wb3N0PEF1dGhUb2tlbnM+KGAke3RoaXMuVVJMfWxvZ2luYCwgcmVxdWVzdCwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdEZXZpY2UtSW5mbyc6IGdldERldmljZUluZm8oKSxcbiAgICAgICAgICAgICdYLUNTUkYtVG9rZW4nOiBjc3JmVG9rZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHJlZ2lzdGVyKHJlcXVlc3Q6IFJlZ2lzdGVyUmVxdWVzdCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz4ge1xuICAgIHJldHVybiBmcm9tKHRoaXMuY3NyZlNlcnZpY2UuZ2V0Q3NyZlRva2VuKCkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY3NyZlRva2VuID0+XG4gICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgIC5wb3N0PFJlZ2lzdGVyUmVzcG9uc2U+KGAke3RoaXMuVVJMfXJlZ2lzdGVyYCwgcmVxdWVzdCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnRGV2aWNlLUluZm8nOiBnZXREZXZpY2VJbmZvKCksXG4gICAgICAgICAgICAgICdYLUNTUkYtVG9rZW4nOiBjc3JmVG9rZW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gbmV3IEF1dGhUb2tlbnMocmVzcG9uc2UudG9rZW4sIHJlc3BvbnNlLnJlZnJlc2hUb2tlbikpLFxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmVmcmVzaFRva2VuKHJlcXVlc3Q6IFJlZnJlc2hUb2tlblJlcXVlc3QpOiBPYnNlcnZhYmxlPEF1dGhUb2tlbnM+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNzcmZTZXJ2aWNlLmdldENzcmZUb2tlbigpKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNzcmZUb2tlbiA9PlxuICAgICAgICB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdDxBdXRoVG9rZW5zPihgJHt0aGlzLlVSTH1yZWZyZXNoYCwgcmVxdWVzdCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnRGV2aWNlLUluZm8nOiBnZXREZXZpY2VJbmZvKCksXG4gICAgICAgICAgICAgICdYLUNTUkYtVG9rZW4nOiBjc3JmVG9rZW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IG5ldyBBdXRoVG9rZW5zKHJlc3BvbnNlLnRva2VuLCByZXNwb25zZS5yZWZyZXNoVG9rZW4pKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbG9nb3V0KGVtYWlsOiBzdHJpbmcsIHJlZnJlc2hUb2tlbjogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jc3JmU2VydmljZS5nZXRDc3JmVG9rZW4oKSkucGlwZShcbiAgICAgIHN3aXRjaE1hcChjc3JmVG9rZW4gPT5cbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8dm9pZD4oYCR7dGhpcy5VUkx9bG9nb3V0YCwgeyBlbWFpbCwgcmVmcmVzaFRva2VuOiByZWZyZXNoVG9rZW4gfHwgdW5kZWZpbmVkIH0sIHtcbiAgICAgICAgICBoZWFkZXJzOiB7ICdYLUNTUkYtVG9rZW4nOiBjc3JmVG9rZW4gfSxcbiAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsIC8vIEVuc3VyZSBjb29raWVzIGFyZSBzZW50XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19","// src/lib/data/repositories/index.ts\nexport * from './auth-http.repository';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9yZXBvc2l0b3JpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUNBQXFDO0FBQ3JDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2RhdGEvcmVwb3NpdG9yaWVzL2luZGV4LnRzXG5leHBvcnQgKiBmcm9tICcuL2F1dGgtaHR0cC5yZXBvc2l0b3J5JztcbiJdfQ==","// src/lib/data/index.ts\nexport * from './repositories';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3QkFBd0I7QUFDeEIsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvZGF0YS9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9yZXBvc2l0b3JpZXMnO1xuIl19","// src/lib/presentation/stores/auth.store.ts\nimport { Injectable, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of, tap, catchError } from 'rxjs';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { UserRepository } from '@acontplus/ng-infrastructure';\nimport * as i0 from \"@angular/core\";\nexport class AuthStore {\n authRepository = inject(AuthRepository);\n tokenRepository = inject(TokenRepository);\n userRepository = inject(UserRepository);\n router = inject(Router);\n // Authentication state signals\n _isAuthenticated = signal(false, ...(ngDevMode ? [{ debugName: \"_isAuthenticated\" }] : []));\n _isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"_isLoading\" }] : []));\n _user = signal(null, ...(ngDevMode ? [{ debugName: \"_user\" }] : []));\n // Public readonly signals\n isAuthenticated = this._isAuthenticated.asReadonly();\n isLoading = this._isLoading.asReadonly();\n user = this._user.asReadonly();\n // Private refresh token timeout (instead of interval)\n refreshTokenTimeout;\n refreshInProgress$;\n constructor() {\n this.initializeAuthentication();\n }\n /**\n * Initialize authentication state on app startup\n */\n initializeAuthentication() {\n this._isLoading.set(true);\n try {\n const isAuthenticated = this.tokenRepository.isAuthenticated();\n this._isAuthenticated.set(isAuthenticated);\n if (isAuthenticated) {\n const userData = this.userRepository.getCurrentUser();\n this._user.set(userData);\n this.scheduleTokenRefresh();\n }\n }\n catch {\n this.logout();\n }\n finally {\n this._isLoading.set(false);\n }\n }\n /**\n * Schedule token refresh based on actual expiration time\n */\n scheduleTokenRefresh() {\n const accessToken = this.tokenRepository.getAccessToken();\n if (!accessToken) {\n return;\n }\n try {\n const decodedToken = this.decodeToken(accessToken);\n const currentTime = Math.floor(Date.now() / 1000);\n const timeUntilExpiry = decodedToken.exp - currentTime;\n // Refresh 5 minutes before expiry (300 seconds)\n const refreshTime = Math.max((timeUntilExpiry - 300) * 1000, 1000);\n // Clear any existing timeout\n if (this.refreshTokenTimeout) {\n clearTimeout(this.refreshTokenTimeout);\n }\n this.refreshTokenTimeout = window.setTimeout(() => {\n // Check if refresh is still needed before executing\n if (this.tokenRepository.needsRefresh()) {\n this.refreshToken().subscribe();\n }\n }, refreshTime);\n }\n catch {\n // Silent fail - token might be invalid\n }\n }\n /**\n * Stop token refresh timer\n */\n stopTokenRefreshTimer() {\n if (this.refreshTokenTimeout) {\n clearTimeout(this.refreshTokenTimeout);\n this.refreshTokenTimeout = undefined;\n }\n }\n /**\n * Refresh authentication tokens\n */\n refreshToken() {\n // Return existing refresh request if one is in progress\n if (this.refreshInProgress$) {\n return this.refreshInProgress$;\n }\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (!userData?.email || !refreshToken) {\n this.logout();\n return of(null);\n }\n this.refreshInProgress$ = this.authRepository\n .refreshToken({\n email: userData.email,\n refreshToken,\n })\n .pipe(tap(tokens => {\n this.setAuthenticated(tokens);\n }), catchError(() => {\n this.logout();\n return of(null);\n }), tap({\n complete: () => {\n this.refreshInProgress$ = undefined;\n },\n error: () => {\n this.refreshInProgress$ = undefined;\n }\n }));\n return this.refreshInProgress$;\n }\n /**\n * Set authentication state after successful login\n */\n setAuthenticated(tokens, rememberMe = false) {\n this.tokenRepository.saveTokens(tokens, rememberMe);\n this._isAuthenticated.set(true);\n const userData = this.userRepository.getCurrentUser();\n this._user.set(userData);\n this.scheduleTokenRefresh();\n }\n /**\n * Logout user and clear all authentication data\n */\n logout() {\n const user = this._user();\n if (user) {\n // Call server-side logout first\n this.authRepository.logout(user.email, '').subscribe({\n next: () => {\n // Server logout successful, clear client-side data\n this.performClientLogout();\n },\n error: () => {\n // Server logout failed, still clear client-side data for security\n this.performClientLogout();\n }\n });\n }\n else {\n // No user data, just clear client-side data\n this.performClientLogout();\n }\n }\n /**\n * Perform client-side logout operations\n */\n performClientLogout() {\n this.stopTokenRefreshTimer();\n this.tokenRepository.clearTokens();\n this._isAuthenticated.set(false);\n this._user.set(null);\n // Navigate to login page\n this.router.navigate(['/auth']);\n }\n /**\n * Check if user is authenticated\n */\n checkAuthentication() {\n const isAuthenticated = this.tokenRepository.isAuthenticated();\n this._isAuthenticated.set(isAuthenticated);\n if (!isAuthenticated) {\n this.logout();\n }\n return isAuthenticated;\n }\n /**\n * Decode JWT token\n */\n decodeToken(token) {\n try {\n const base64Url = token.split('.')[1];\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const jsonPayload = decodeURIComponent(atob(base64)\n .split('')\n .map(c => {\n return `%${`00${c.charCodeAt(0).toString(16)}`.slice(-2)}`;\n })\n .join(''));\n return JSON.parse(jsonPayload);\n }\n catch {\n throw new Error('Invalid token format');\n }\n }\n /**\n * Cleanup on store destruction\n */\n ngOnDestroy() {\n this.stopTokenRefreshTimer();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: AuthStore, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi91aS9zdG9yZXMvYXV0aC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBTzlELE1BQU0sT0FBTyxTQUFTO0lBQ0gsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV6QywrQkFBK0I7SUFDZCxnQkFBZ0IsR0FBRyxNQUFNLENBQVUsS0FBSyw0REFBQyxDQUFDO0lBQzFDLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxzREFBQyxDQUFDO0lBQ3BDLEtBQUssR0FBRyxNQUFNLENBQWtCLElBQUksaURBQUMsQ0FBQztJQUV2RCwwQkFBMEI7SUFDakIsZUFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVB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T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO3VHQTNOVSxTQUFTOzJHQUFULFNBQVMsY0FGUixNQUFNOzsyRkFFUCxTQUFTO2tCQUhyQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJlc2VudGF0aW9uL3N0b3Jlcy9hdXRoLnN0b3JlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHNpZ25hbCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRhcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgand0RGVjb2RlIH0gZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQgeyBBdXRoUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFRva2VuUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL3JlcG9zaXRvcmllcy90b2tlbi5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFVzZXJSZXBvc2l0b3J5IH0gZnJvbSAnQGFjb250cGx1cy9uZy1pbmZyYXN0cnVjdHVyZSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IFVzZXJEYXRhLCBEZWNvZGVkVG9rZW4gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFN0b3JlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoUmVwb3NpdG9yeSA9IGluamVjdChBdXRoUmVwb3NpdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5SZXBvc2l0b3J5ID0gaW5qZWN0KFRva2VuUmVwb3NpdG9yeSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnkgPSBpbmplY3QoVXNlclJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIC8vIEF1dGhlbnRpY2F0aW9uIHN0YXRlIHNpZ25hbHNcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdXRoZW50aWNhdGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNMb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlciA9IHNpZ25hbDxVc2VyRGF0YSB8IG51bGw+KG51bGwpO1xuXG4gIC8vIFB1YmxpYyByZWFkb25seSBzaWduYWxzXG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuX2lzQXV0aGVudGljYXRlZC5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IHRoaXMuX2lzTG9hZGluZy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHVzZXIgPSB0aGlzLl91c2VyLmFzUmVhZG9ubHkoKTtcblxuICAvLyBQcml2YXRlIHJlZnJlc2ggdG9rZW4gdGltZW91dCAoaW5zdGVhZCBvZiBpbnRlcnZhbClcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5UaW1lb3V0PzogbnVtYmVyO1xuICBwcml2YXRlIHJlZnJlc2hJblByb2dyZXNzJD86IE9ic2VydmFibGU8QXV0aFRva2VucyB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUF1dGhlbnRpY2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhdXRoZW50aWNhdGlvbiBzdGF0ZSBvbiBhcHAgc3RhcnR1cFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQXV0aGVudGljYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5faXNMb2FkaW5nLnNldCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLnRva2VuUmVwb3NpdG9yeS5pc0F1dGhlbnRpY2F0ZWQoKTtcbiAgICAgIHRoaXMuX2lzQXV0aGVudGljYXRlZC5zZXQoaXNBdXRoZW50aWNhdGVkKTtcblxuICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICBjb25zdCB1c2VyRGF0YSA9IHRoaXMudXNlclJlcG9zaXRvcnkuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgdGhpcy5fdXNlci5zZXQodXNlckRhdGEpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlVG9rZW5SZWZyZXNoKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2NoZWR1bGUgdG9rZW4gcmVmcmVzaCBiYXNlZCBvbiBhY3R1YWwgZXhwaXJhdGlvbiB0aW1lXG4gICAqL1xuICBwcml2YXRlIHNjaGVkdWxlVG9rZW5SZWZyZXNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gdGhpcy50b2tlblJlcG9zaXRvcnkuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IHRoaXMuZGVjb2RlVG9rZW4oYWNjZXNzVG9rZW4pO1xuICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgICAgIGNvbnN0IHRpbWVVbnRpbEV4cGlyeSA9IGRlY29kZWRUb2tlbi5leHAgLSBjdXJyZW50VGltZTtcblxuICAgICAgLy8gUmVmcmVzaCA1IG1pbnV0ZXMgYmVmb3JlIGV4cGlyeSAoMzAwIHNlY29uZHMpXG4gICAgICBjb25zdCByZWZyZXNoVGltZSA9IE1hdGgubWF4KCh0aW1lVW50aWxFeHBpcnkgLSAzMDApICogMTAwMCwgMTAwMCk7XG5cbiAgICAgIC8vIENsZWFyIGFueSBleGlzdGluZyB0aW1lb3V0XG4gICAgICBpZiAodGhpcy5yZWZyZXNoVG9rZW5UaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlZnJlc2hUb2tlblRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlZnJlc2hUb2tlblRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGlmIHJlZnJlc2ggaXMgc3RpbGwgbmVlZGVkIGJlZm9yZSBleGVjdXRpbmdcbiAgICAgICAgaWYgKHRoaXMudG9rZW5SZXBvc2l0b3J5Lm5lZWRzUmVmcmVzaCgpKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4oKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgfSwgcmVmcmVzaFRpbWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU2lsZW50IGZhaWwgLSB0b2tlbiBtaWdodCBiZSBpbnZhbGlkXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgdG9rZW4gcmVmcmVzaCB0aW1lclxuICAgKi9cbiAgcHJpdmF0ZSBzdG9wVG9rZW5SZWZyZXNoVGltZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmcmVzaFRva2VuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVmcmVzaFRva2VuVGltZW91dCk7XG4gICAgICB0aGlzLnJlZnJlc2hUb2tlblRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggYXV0aGVudGljYXRpb24gdG9rZW5zXG4gICAqL1xuICByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zIHwgbnVsbD4ge1xuICAgIC8vIFJldHVybiBleGlzdGluZyByZWZyZXNoIHJlcXVlc3QgaWYgb25lIGlzIGluIHByb2dyZXNzXG4gICAgaWYgKHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MkKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyQ7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnVzZXJSZXBvc2l0b3J5LmdldEN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy50b2tlblJlcG9zaXRvcnkuZ2V0UmVmcmVzaFRva2VuKCk7XG5cbiAgICBpZiAoIXVzZXJEYXRhPy5lbWFpbCB8fCAhcmVmcmVzaFRva2VuKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaEluUHJvZ3Jlc3MkID0gdGhpcy5hdXRoUmVwb3NpdG9yeVxuICAgICAgLnJlZnJlc2hUb2tlbih7XG4gICAgICAgIGVtYWlsOiB1c2VyRGF0YS5lbWFpbCxcbiAgICAgICAgcmVmcmVzaFRva2VuLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodG9rZW5zID0+IHtcbiAgICAgICAgICB0aGlzLnNldEF1dGhlbnRpY2F0ZWQodG9rZW5zKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKHtcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgIHJldHVybiB0aGlzLnJlZnJlc2hJblByb2dyZXNzJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYXV0aGVudGljYXRpb24gc3RhdGUgYWZ0ZXIgc3VjY2Vzc2Z1bCBsb2dpblxuICAgKi9cbiAgc2V0QXV0aGVudGljYXRlZCh0b2tlbnM6IEF1dGhUb2tlbnMsIHJlbWVtYmVyTWU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5SZXBvc2l0b3J5LnNhdmVUb2tlbnModG9rZW5zLCByZW1lbWJlck1lKTtcbiAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQuc2V0KHRydWUpO1xuICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy51c2VyUmVwb3NpdG9yeS5nZXRDdXJyZW50VXNlcigpO1xuICAgIHRoaXMuX3VzZXIuc2V0KHVzZXJEYXRhKTtcbiAgICB0aGlzLnNjaGVkdWxlVG9rZW5SZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9nb3V0IHVzZXIgYW5kIGNsZWFyIGFsbCBhdXRoZW50aWNhdGlvbiBkYXRhXG4gICAqL1xuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuX3VzZXIoKTtcbiAgICBpZiAodXNlcikge1xuICAgICAgLy8gQ2FsbCBzZXJ2ZXItc2lkZSBsb2dvdXQgZmlyc3RcbiAgICAgIHRoaXMuYXV0aFJlcG9zaXRvcnkubG9nb3V0KHVzZXIuZW1haWwsICcnKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gU2VydmVyIGxvZ291dCBzdWNjZXNzZnVsLCBjbGVhciBjbGllbnQtc2lkZSBkYXRhXG4gICAgICAgICAgdGhpcy5wZXJmb3JtQ2xpZW50TG9nb3V0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU2VydmVyIGxvZ291dCBmYWlsZWQsIHN0aWxsIGNsZWFyIGNsaWVudC1zaWRlIGRhdGEgZm9yIHNlY3VyaXR5XG4gICAgICAgICAgdGhpcy5wZXJmb3JtQ2xpZW50TG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyB1c2VyIGRhdGEsIGp1c3QgY2xlYXIgY2xpZW50LXNpZGUgZGF0YVxuICAgICAgdGhpcy5wZXJmb3JtQ2xpZW50TG9nb3V0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gY2xpZW50LXNpZGUgbG9nb3V0IG9wZXJhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgcGVyZm9ybUNsaWVudExvZ291dCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BUb2tlblJlZnJlc2hUaW1lcigpO1xuICAgIHRoaXMudG9rZW5SZXBvc2l0b3J5LmNsZWFyVG9rZW5zKCk7XG4gICAgdGhpcy5faXNBdXRoZW50aWNhdGVkLnNldChmYWxzZSk7XG4gICAgdGhpcy5fdXNlci5zZXQobnVsbCk7XG5cbiAgICAvLyBOYXZpZ2F0ZSB0byBsb2dpbiBwYWdlXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXV0aCddKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB1c2VyIGlzIGF1dGhlbnRpY2F0ZWRcbiAgICovXG4gIGNoZWNrQXV0aGVudGljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNBdXRoZW50aWNhdGVkID0gdGhpcy50b2tlblJlcG9zaXRvcnkuaXNBdXRoZW50aWNhdGVkKCk7XG4gICAgdGhpcy5faXNBdXRoZW50aWNhdGVkLnNldChpc0F1dGhlbnRpY2F0ZWQpO1xuXG4gICAgaWYgKCFpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzQXV0aGVudGljYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGUgSldUIHRva2VuXG4gICAqL1xuICBwcml2YXRlIGRlY29kZVRva2VuKHRva2VuOiBzdHJpbmcpOiBEZWNvZGVkVG9rZW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdCgnLicpWzFdO1xuICAgICAgY29uc3QgYmFzZTY0ID0gYmFzZTY0VXJsLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7XG4gICAgICBjb25zdCBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgYXRvYihiYXNlNjQpXG4gICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgIC5tYXAoYyA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCUke2AwMCR7Yy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKX1gO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oJycpLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25QYXlsb2FkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0b2tlbiBmb3JtYXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW51cCBvbiBzdG9yZSBkZXN0cnVjdGlvblxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wVG9rZW5SZWZyZXNoVGltZXIoKTtcbiAgfVxufVxuIl19","// src/lib/application/use-cases/login.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { tap } from 'rxjs';\nimport { BaseUseCase } from '@acontplus/ng-infrastructure';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport { UrlRedirectService } from '../../services/url-redirect.service';\nimport * as i0 from \"@angular/core\";\nexport class LoginUseCase extends BaseUseCase {\n authRepository = inject(AuthRepository);\n authStore = inject(AuthStore);\n router = inject(Router);\n urlRedirectService = inject(UrlRedirectService);\n execute(request) {\n return this.authRepository.login(request).pipe(tap(tokens => {\n // Set authentication state with rememberMe preference\n this.authStore.setAuthenticated(tokens, request.rememberMe ?? false);\n // Redirect to intended URL or default route\n this.urlRedirectService.redirectToIntendedUrl('/');\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4udXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2xvZ2luLnVzZS1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUFrRDtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFxQztJQUNwRCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QixrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRSxPQUFPLENBQUMsT0FBcUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUFDO1lBRXJFLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBaEJVLFlBQVk7MkdBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvbG9naW4udXNlLWNhc2UudHNcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZVVzZUNhc2UgfSBmcm9tICdAYWNvbnRwbHVzL25nLWluZnJhc3RydWN0dXJlJztcbmltcG9ydCB7IEF1dGhSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluL3JlcG9zaXRvcmllcy9hdXRoLnJlcG9zaXRvcnknO1xuaW1wb3J0IHsgTG9naW5SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy91c2VyJztcbmltcG9ydCB7IEF1dGhUb2tlbnMgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFN0b3JlIH0gZnJvbSAnLi4vLi4vdWkvc3RvcmVzL2F1dGguc3RvcmUnO1xuaW1wb3J0IHsgVXJsUmVkaXJlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXJsLXJlZGlyZWN0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Vc2VDYXNlIGV4dGVuZHMgQmFzZVVzZUNhc2U8TG9naW5SZXF1ZXN0LCBBdXRoVG9rZW5zPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFJlcG9zaXRvcnkgPSBpbmplY3QoQXV0aFJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdG9yZSA9IGluamVjdChBdXRoU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVybFJlZGlyZWN0U2VydmljZSA9IGluamVjdChVcmxSZWRpcmVjdFNlcnZpY2UpO1xuXG4gIGV4ZWN1dGUocmVxdWVzdDogTG9naW5SZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFJlcG9zaXRvcnkubG9naW4ocmVxdWVzdCkucGlwZShcbiAgICAgIHRhcCh0b2tlbnMgPT4ge1xuICAgICAgICAvLyBTZXQgYXV0aGVudGljYXRpb24gc3RhdGUgd2l0aCByZW1lbWJlck1lIHByZWZlcmVuY2VcbiAgICAgICAgdGhpcy5hdXRoU3RvcmUuc2V0QXV0aGVudGljYXRlZCh0b2tlbnMsIHJlcXVlc3QucmVtZW1iZXJNZSA/PyBmYWxzZSk7XG5cbiAgICAgICAgLy8gUmVkaXJlY3QgdG8gaW50ZW5kZWQgVVJMIG9yIGRlZmF1bHQgcm91dGVcbiAgICAgICAgdGhpcy51cmxSZWRpcmVjdFNlcnZpY2UucmVkaXJlY3RUb0ludGVuZGVkVXJsKCcvJyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=","// src/lib/application/use-cases/register.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { tap } from 'rxjs';\nimport { BaseUseCase } from '@acontplus/ng-infrastructure';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class RegisterUseCase extends BaseUseCase {\n authRepository = inject(AuthRepository);\n authStore = inject(AuthStore);\n router = inject(Router);\n execute(request) {\n return this.authRepository.register(request).pipe(tap(tokens => {\n // Set authentication state\n this.authStore.setAuthenticated(tokens);\n // Navigate to main page\n this.router.navigate(['/']);\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RegisterUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIudXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL3JlZ2lzdGVyLnVzZS1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUFxRDtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFLdkQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBd0M7SUFDMUQsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFekMsT0FBTyxDQUFDLE9BQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCwyQkFBMkI7WUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4Qyx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO3VHQWZVLGVBQWU7MkdBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvcmVnaXN0ZXIudXNlLWNhc2UudHNcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZVVzZUNhc2UgfSBmcm9tICdAYWNvbnRwbHVzL25nLWluZnJhc3RydWN0dXJlJztcbmltcG9ydCB7IEF1dGhSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluL3JlcG9zaXRvcmllcy9hdXRoLnJlcG9zaXRvcnknO1xuaW1wb3J0IHsgUmVnaXN0ZXJSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy91c2VyJztcbmltcG9ydCB7IEF1dGhUb2tlbnMgfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFN0b3JlIH0gZnJvbSAnLi4vLi4vdWkvc3RvcmVzL2F1dGguc3RvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJVc2VDYXNlIGV4dGVuZHMgQmFzZVVzZUNhc2U8UmVnaXN0ZXJSZXF1ZXN0LCBBdXRoVG9rZW5zPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFJlcG9zaXRvcnkgPSBpbmplY3QoQXV0aFJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdG9yZSA9IGluamVjdChBdXRoU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIGV4ZWN1dGUocmVxdWVzdDogUmVnaXN0ZXJSZXF1ZXN0KTogT2JzZXJ2YWJsZTxBdXRoVG9rZW5zPiB7XG4gICAgcmV0dXJuIHRoaXMuYXV0aFJlcG9zaXRvcnkucmVnaXN0ZXIocmVxdWVzdCkucGlwZShcbiAgICAgIHRhcCh0b2tlbnMgPT4ge1xuICAgICAgICAvLyBTZXQgYXV0aGVudGljYXRpb24gc3RhdGVcbiAgICAgICAgdGhpcy5hdXRoU3RvcmUuc2V0QXV0aGVudGljYXRlZCh0b2tlbnMpO1xuXG4gICAgICAgIC8vIE5hdmlnYXRlIHRvIG1haW4gcGFnZVxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iXX0=","// src/lib/application/use-cases/refresh-token.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { throwError, catchError, tap } from 'rxjs';\nimport { BaseUseCase, UserRepository } from '@acontplus/ng-infrastructure';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class RefreshTokenUseCase extends BaseUseCase {\n authRepository = inject(AuthRepository);\n userRepository = inject(UserRepository);\n tokenRepository = inject(TokenRepository);\n authStore = inject(AuthStore);\n execute() {\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (!userData?.email || !refreshToken || refreshToken.trim().length === 0) {\n const error = new Error('No refresh token or email available');\n return throwError(() => error);\n }\n return this.authRepository\n .refreshToken({\n email: userData.email,\n refreshToken,\n })\n .pipe(tap(tokens => {\n // Preserve the rememberMe preference from the current token storage\n const rememberMe = this.tokenRepository.isRememberMeEnabled();\n // Update authentication state\n this.authStore.setAuthenticated(tokens, rememberMe);\n }), catchError(error => {\n // Don't logout here, let the interceptor handle it\n return throwError(() => error);\n }));\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: RefreshTokenUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC10b2tlbi51c2UtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvcmVmcmVzaC10b2tlbi51c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFjLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxXQUE2QjtJQUNuRCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMxQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRS9DLE9BQU87UUFDTCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFNUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjO2FBQ3ZCLFlBQVksQ0FBQztZQUNaLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztZQUNyQixZQUFZO1NBQ2IsQ0FBQzthQUNELElBQUksQ0FDSCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxvRUFBb0U7WUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlELDhCQUE4QjtZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsbURBQW1EO1lBQ25ELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO3VHQWhDVSxtQkFBbUI7MkdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvcmVmcmVzaC10b2tlbi51c2UtY2FzZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VVc2VDYXNlLCBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BhY29udHBsdXMvbmctaW5mcmFzdHJ1Y3R1cmUnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBUb2tlblJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9yZXBvc2l0b3JpZXMvdG9rZW4ucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBBdXRoVG9rZW5zIH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IEF1dGhTdG9yZSB9IGZyb20gJy4uLy4uL3VpL3N0b3Jlcy9hdXRoLnN0b3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlZnJlc2hUb2tlblVzZUNhc2UgZXh0ZW5kcyBCYXNlVXNlQ2FzZTx2b2lkLCBBdXRoVG9rZW5zPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFJlcG9zaXRvcnkgPSBpbmplY3QoQXV0aFJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5ID0gaW5qZWN0KFVzZXJSZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlblJlcG9zaXRvcnkgPSBpbmplY3QoVG9rZW5SZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU3RvcmUgPSBpbmplY3QoQXV0aFN0b3JlKTtcblxuICBleGVjdXRlKCk6IE9ic2VydmFibGU8QXV0aFRva2Vucz4ge1xuICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy51c2VyUmVwb3NpdG9yeS5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgaWYgKCF1c2VyRGF0YT8uZW1haWwgfHwgIXJlZnJlc2hUb2tlbiB8fCByZWZyZXNoVG9rZW4udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ05vIHJlZnJlc2ggdG9rZW4gb3IgZW1haWwgYXZhaWxhYmxlJyk7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYXV0aFJlcG9zaXRvcnlcbiAgICAgIC5yZWZyZXNoVG9rZW4oe1xuICAgICAgICBlbWFpbDogdXNlckRhdGEuZW1haWwsXG4gICAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHRva2VucyA9PiB7XG4gICAgICAgICAgLy8gUHJlc2VydmUgdGhlIHJlbWVtYmVyTWUgcHJlZmVyZW5jZSBmcm9tIHRoZSBjdXJyZW50IHRva2VuIHN0b3JhZ2VcbiAgICAgICAgICBjb25zdCByZW1lbWJlck1lID0gdGhpcy50b2tlblJlcG9zaXRvcnkuaXNSZW1lbWJlck1lRW5hYmxlZCgpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBhdXRoZW50aWNhdGlvbiBzdGF0ZVxuICAgICAgICAgIHRoaXMuYXV0aFN0b3JlLnNldEF1dGhlbnRpY2F0ZWQodG9rZW5zLCByZW1lbWJlck1lKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIERvbid0IGxvZ291dCBoZXJlLCBsZXQgdGhlIGludGVyY2VwdG9yIGhhbmRsZSBpdFxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG59XG4iXX0=","// src/lib/application/use-cases/logout.use-case.ts\nimport { Injectable, inject } from '@angular/core';\nimport { of, tap } from 'rxjs';\nimport { BaseUseCase, UserRepository } from '@acontplus/ng-infrastructure';\nimport { AuthRepository } from '../../domain/repositories/auth.repository';\nimport { TokenRepository } from '../../repositories/token.repository';\nimport { AuthStore } from '../../ui/stores/auth.store';\nimport * as i0 from \"@angular/core\";\nexport class LogoutUseCase extends BaseUseCase {\n authRepository = inject(AuthRepository);\n userRepository = inject(UserRepository);\n tokenRepository = inject(TokenRepository);\n authStore = inject(AuthStore);\n execute() {\n const userData = this.userRepository.getCurrentUser();\n const refreshToken = this.tokenRepository.getRefreshToken();\n if (userData?.email && refreshToken && refreshToken.length > 0) {\n return this.authRepository.logout(userData.email, refreshToken).pipe(tap(() => this.cleanup()));\n }\n this.cleanup();\n return of(void 0);\n }\n cleanup() {\n // Use auth store for centralized logout\n this.authStore.logout();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LogoutUseCase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LnVzZS1jYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9sb2dvdXQudXNlLWNhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS3ZELE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBdUI7SUFDdkMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN4QyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQyxPQUFPO1FBQ0wsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVELElBQUksUUFBUSxFQUFFLEtBQUssSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xHLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTyxPQUFPO1FBQ2Isd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDMUIsQ0FBQzt1R0FyQlUsYUFBYTsyR0FBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9sb2dvdXQudXNlLWNhc2UudHNcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZVVzZUNhc2UsIFVzZXJSZXBvc2l0b3J5IH0gZnJvbSAnQGFjb250cGx1cy9uZy1pbmZyYXN0cnVjdHVyZSc7XG5pbXBvcnQgeyBBdXRoUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbi9yZXBvc2l0b3JpZXMvYXV0aC5yZXBvc2l0b3J5JztcbmltcG9ydCB7IFRva2VuUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL3JlcG9zaXRvcmllcy90b2tlbi5yZXBvc2l0b3J5JztcbmltcG9ydCB7IEF1dGhTdG9yZSB9IGZyb20gJy4uLy4uL3VpL3N0b3Jlcy9hdXRoLnN0b3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvZ291dFVzZUNhc2UgZXh0ZW5kcyBCYXNlVXNlQ2FzZTx2b2lkLCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0aFJlcG9zaXRvcnkgPSBpbmplY3QoQXV0aFJlcG9zaXRvcnkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5ID0gaW5qZWN0KFVzZXJSZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlblJlcG9zaXRvcnkgPSBpbmplY3QoVG9rZW5SZXBvc2l0b3J5KTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU3RvcmUgPSBpbmplY3QoQXV0aFN0b3JlKTtcblxuICBleGVjdXRlKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy51c2VyUmVwb3NpdG9yeS5nZXRDdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5SZXBvc2l0b3J5LmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgaWYgKHVzZXJEYXRhPy5lbWFpbCAmJiByZWZyZXNoVG9rZW4gJiYgcmVmcmVzaFRva2VuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmF1dGhSZXBvc2l0b3J5LmxvZ291dCh1c2VyRGF0YS5lbWFpbCwgcmVmcmVzaFRva2VuKS5waXBlKHRhcCgoKSA9PiB0aGlzLmNsZWFudXAoKSkpO1xuICAgIH1cblxuICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIHJldHVybiBvZih2b2lkIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwKCk6IHZvaWQge1xuICAgIC8vIFVzZSBhdXRoIHN0b3JlIGZvciBjZW50cmFsaXplZCBsb2dvdXRcbiAgICB0aGlzLmF1dGhTdG9yZS5sb2dvdXQoKTtcbiAgfVxufVxuIl19","// src/lib/application/use-cases/index.ts\nexport * from './login.use-case';\nexport * from './register.use-case';\nexport * from './refresh-token.use-case';\nexport * from './logout.use-case';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vdXNlLWNhc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4udXNlLWNhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlci51c2UtY2FzZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlZnJlc2gtdG9rZW4udXNlLWNhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2dvdXQudXNlLWNhc2UnO1xuIl19","// src/lib/application/index.ts\nexport * from './use-cases';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvYXBwbGljYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9hcHBsaWNhdGlvbi9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi91c2UtY2FzZXMnO1xuIl19","// src/lib/presentation/stores/index.ts\nexport * from './auth.store';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvc3RvcmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVDQUF1QztBQUN2QyxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJlc2VudGF0aW9uL3N0b3Jlcy9pbmRleC50c1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnN0b3JlJztcbiJdfQ==","// src/lib/presentation/components/login/login.component.ts\nimport { ChangeDetectionStrategy, Component, inject, input, signal, computed, } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, Validators, ReactiveFormsModule, } from '@angular/forms';\nimport { MatCard, MatCardContent, MatCardFooter, MatCardHeader, MatCardTitle, } from '@angular/material/card';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatAnchor, MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { LoginUseCase } from '../../application/use-cases/login.use-case';\nimport { RegisterUseCase } from '../../application/use-cases/register.use-case';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nexport class LoginComponent {\n title = input('Login', ...(ngDevMode ? [{ debugName: \"title\" }] : []));\n showRegisterButton = input(true, ...(ngDevMode ? [{ debugName: \"showRegisterButton\" }] : []));\n showRememberMe = input(true, ...(ngDevMode ? [{ debugName: \"showRememberMe\" }] : []));\n // Additional form controls that can be passed from parent components\n additionalSigninControls = input({}, ...(ngDevMode ? [{ debugName: \"additionalSigninControls\" }] : []));\n additionalSignupControls = input({}, ...(ngDevMode ? [{ debugName: \"additionalSignupControls\" }] : []));\n // Additional field templates\n additionalSigninFields = input(null, ...(ngDevMode ? [{ debugName: \"additionalSigninFields\" }] : []));\n additionalSignupFields = input(null, ...(ngDevMode ? [{ debugName: \"additionalSignupFields\" }] : []));\n // Footer content template\n footerContent = input(null, ...(ngDevMode ? [{ debugName: \"footerContent\" }] : []));\n // Computed signal to check if footer content exists\n hasFooterContent = computed(() => this.footerContent() !== null, ...(ngDevMode ? [{ debugName: \"hasFooterContent\" }] : []));\n fb = inject(FormBuilder);\n loginUseCase = inject(LoginUseCase);\n registerUseCase = inject(RegisterUseCase);\n // Angular 20+ signals\n isLoginMode = signal(true, ...(ngDevMode ? [{ debugName: \"isLoginMode\" }] : []));\n isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n errorMessage = signal(null, ...(ngDevMode ? [{ debugName: \"errorMessage\" }] : []));\n signinForm;\n signupForm;\n constructor() {\n this.signinForm = this.fb.group({\n email: ['', [Validators.required, Validators.email]],\n password: ['', Validators.required],\n rememberMe: [false], // Default to false (unchecked)\n });\n this.signupForm = this.fb.group({\n displayName: ['', Validators.required],\n email: ['', [Validators.required, Validators.email]],\n password: ['', [Validators.required, Validators.minLength(6)]],\n });\n }\n ngOnInit() {\n // Handle rememberMe control based on showRememberMe input\n if (!this.showRememberMe()) {\n // Remove rememberMe control if not needed\n this.signinForm.removeControl('rememberMe');\n }\n // Add additional controls to signin form\n Object.entries(this.additionalSigninControls()).forEach(([key, control]) => {\n this.signinForm.addControl(key, control);\n });\n // Add additional controls to signup form\n Object.entries(this.additionalSignupControls()).forEach(([key, control]) => {\n this.signupForm.addControl(key, control);\n });\n }\n switchMode() {\n this.isLoginMode.set(!this.isLoginMode());\n this.errorMessage.set(null);\n }\n signIn() {\n if (this.signinForm.valid) {\n this.isLoading.set(true);\n this.errorMessage.set(null);\n // Prepare login request with rememberMe handling\n const loginRequest = {\n ...this.signinForm.value,\n // If showRememberMe is false, default rememberMe to false\n rememberMe: this.showRememberMe() ? (this.signinForm.value.rememberMe ?? false) : false\n };\n this.loginUseCase.execute(loginRequest).subscribe({\n next: () => {\n this.isLoading.set(false);\n },\n error: error => {\n this.isLoading.set(false);\n this.errorMessage.set('Error al iniciar sesión. Verifique sus credenciales.');\n console.error('Login error:', error);\n },\n });\n }\n }\n registerUser() {\n if (this.signupForm.valid) {\n this.isLoading.set(true);\n this.errorMessage.set(null);\n this.registerUseCase.execute(this.signupForm.value).subscribe({\n next: () => {\n this.isLoading.set(false);\n this.signupForm.reset();\n this.isLoginMode.set(true);\n },\n error: error => {\n this.isLoading.set(false);\n this.errorMessage.set('Error al registrar usuario. Intente nuevamente.');\n console.error('Register error:', error);\n },\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.2\", type: LoginComponent, isStandalone: true, selector: \"acp-login\", inputs: { title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, showRegisterButton: { classPropertyName: \"showRegisterButton\", publicName: \"showRegisterButton\", isSignal: true, isRequired: false, transformFunction: null }, showRememberMe: { classPropertyName: \"showRememberMe\", publicName: \"showRememberMe\", isSignal: true, isRequired: false, transformFunction: null }, additionalSigninControls: { classPropertyName: \"additionalSigninControls\", publicName: \"additionalSigninControls\", isSignal: true, isRequired: false, transformFunction: null }, additionalSignupControls: { classPropertyName: \"additionalSignupControls\", publicName: \"additionalSignupControls\", isSignal: true, isRequired: false, transformFunction: null }, additionalSigninFields: { classPropertyName: \"additionalSigninFields\", publicName: \"additionalSigninFields\", isSignal: true, isRequired: false, transformFunction: null }, additionalSignupFields: { classPropertyName: \"additionalSignupFields\", publicName: \"additionalSignupFields\", isSignal: true, isRequired: false, transformFunction: null }, footerContent: { classPropertyName: \"footerContent\", publicName: \"footerContent\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: \"<section id=\\\"wrapper\\\" class=\\\"d-flex justify-content-center align-items-center\\\">\\n <mat-card class=\\\"mat-elevation-z8 p-4 rounded\\\">\\n <mat-card-header>\\n <mat-card-title class=\\\"text-center\\\">{{ title() }}</mat-card-title>\\n </mat-card-header>\\n <mat-card-content>\\n @if (isLoginMode()) {\\n <form [formGroup]=\\\"signinForm\\\" (ngSubmit)=\\\"signIn()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Usuario</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su usuario\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Remember Me checkbox - conditional -->\\n @if (showRememberMe()) {\\n <div class=\\\"d-flex align-items-center mt-2\\\">\\n <mat-checkbox formControlName=\\\"rememberMe\\\">\\n Recordarme\\n </mat-checkbox>\\n </div>\\n }\\n\\n <!-- Additional signin fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSigninFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signinForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Ingresando...\\n } @else {\\n <ng-container>Ingresar <mat-icon>login</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n @if (showRegisterButton()) {\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\n \\u00BFNo tienes cuenta? Reg\\u00EDstrate\\n </button>\\n }\\n </div>\\n </form>\\n } @else {\\n <form [formGroup]=\\\"signupForm\\\" (ngSubmit)=\\\"registerUser()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su nombre\\\" formControlName=\\\"displayName\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Email</mat-label>\\n <input matInput type=\\\"email\\\" placeholder=\\\"Ingrese su email\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signup fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSignupFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signupForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Registrando...\\n } @else {\\n <ng-container>Registrarse <mat-icon>person_add</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\u00BFYa tienes cuenta? Inicia sesi\\u00F3n</button>\\n </div>\\n </form>\\n }\\n @if (errorMessage()) {\\n <div class=\\\"alert alert-danger mt-3\\\" role=\\\"alert\\\">\\n {{ errorMessage() }}\\n </div>\\n }\\n </mat-card-content>\\n @if (hasFooterContent()) {\\n <mat-card-footer>\\n <ng-container *ngTemplateOutlet=\\\"footerContent()\\\"></ng-container>\\n </mat-card-footer>\\n }\\n </mat-card>\\n</section>\\n\", styles: [\"#wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--mdc-theme-primary, #5c5f5c) 0%,var(--mdc-theme-secondary, #79747e) 100%);padding:20px}mat-card{width:100%;max-width:400px;border-radius:12px;box-shadow:0 8px 32px #0000001a}mat-card-header{text-align:center;margin-bottom:20px}mat-card-title{font-size:24px;font-weight:600;color:var(--mdc-theme-on-surface, #1c1b1f)}mat-form-field{width:100%}.w-100{width:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.gap-3{gap:12px}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.mt-3{margin-top:12px}.mt-2{margin-top:8px}.text-center{text-align:center}.p-4{padding:16px}.rounded{border-radius:12px}.alert-danger{background-color:var(--mdc-theme-error-container, #ffdad6);border-color:var(--mdc-theme-error, #ba1a1a);color:var(--mdc-theme-on-error-container, #410002);padding:12px;border-radius:4px;border:1px solid transparent}.row{display:flex;flex-wrap:wrap;margin:0 -15px}.col-xs-12,.col-sm-12,.col-md-12{flex:0 0 100%;max-width:100%;padding:0 15px}.m-t-10{margin-top:10px}.social{display:flex;justify-content:center}mat-button{border-radius:8px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i2.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"component\", type: MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"component\", type: MatCardHeader, selector: \"mat-card-header\" }, { kind: \"directive\", type: MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\" }, { kind: \"directive\", type: MatCardContent, selector: \"mat-card-content\" }, { kind: \"component\", type: MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\", \"disabledInteractive\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatButton, selector: \" button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] \", inputs: [\"matButton\"], exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"directive\", type: MatCardFooter, selector: \"mat-card-footer\" }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.2\", ngImport: i0, type: LoginComponent, decorators: [{\n type: Component,\n args: [{ selector: 'acp-login', imports: [\n CommonModule,\n ReactiveFormsModule,\n MatCard,\n MatCardHeader,\n MatLabel,\n MatCardTitle,\n MatCardContent,\n MatFormField,\n MatInput,\n MatIcon,\n MatButton,\n MatCardFooter,\n MatAnchor,\n MatCheckbox,\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<section id=\\\"wrapper\\\" class=\\\"d-flex justify-content-center align-items-center\\\">\\n <mat-card class=\\\"mat-elevation-z8 p-4 rounded\\\">\\n <mat-card-header>\\n <mat-card-title class=\\\"text-center\\\">{{ title() }}</mat-card-title>\\n </mat-card-header>\\n <mat-card-content>\\n @if (isLoginMode()) {\\n <form [formGroup]=\\\"signinForm\\\" (ngSubmit)=\\\"signIn()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Usuario</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su usuario\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Remember Me checkbox - conditional -->\\n @if (showRememberMe()) {\\n <div class=\\\"d-flex align-items-center mt-2\\\">\\n <mat-checkbox formControlName=\\\"rememberMe\\\">\\n Recordarme\\n </mat-checkbox>\\n </div>\\n }\\n\\n <!-- Additional signin fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSigninFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signinForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Ingresando...\\n } @else {\\n <ng-container>Ingresar <mat-icon>login</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n @if (showRegisterButton()) {\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\n \\u00BFNo tienes cuenta? Reg\\u00EDstrate\\n </button>\\n }\\n </div>\\n </form>\\n } @else {\\n <form [formGroup]=\\\"signupForm\\\" (ngSubmit)=\\\"registerUser()\\\" class=\\\"d-flex flex-column gap-3\\\">\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Nombre</mat-label>\\n <input matInput type=\\\"text\\\" placeholder=\\\"Ingrese su nombre\\\" formControlName=\\\"displayName\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Email</mat-label>\\n <input matInput type=\\\"email\\\" placeholder=\\\"Ingrese su email\\\" formControlName=\\\"email\\\" />\\n </mat-form-field>\\n\\n <mat-form-field class=\\\"w-100\\\">\\n <mat-label>Contrase\\u00F1a</mat-label>\\n <input matInput type=\\\"password\\\" placeholder=\\\"Ingrese su contrase\\u00F1a\\\" formControlName=\\\"password\\\" />\\n </mat-form-field>\\n\\n <!-- Additional signup fields -->\\n <ng-container *ngTemplateOutlet=\\\"additionalSignupFields()\\\"></ng-container>\\n\\n <div class=\\\"d-flex justify-content-center mt-3\\\">\\n <button mat-raised-button color=\\\"primary\\\" [disabled]=\\\"!signupForm.valid || isLoading()\\\" type=\\\"submit\\\"\\n class=\\\"w-100\\\">\\n @if (isLoading()) {\\n Registrando...\\n } @else {\\n <ng-container>Registrarse <mat-icon>person_add</mat-icon></ng-container>\\n }\\n </button>\\n </div>\\n\\n <div class=\\\"text-center mt-2\\\">\\n <button mat-button type=\\\"button\\\" (click)=\\\"switchMode()\\\">\\u00BFYa tienes cuenta? Inicia sesi\\u00F3n</button>\\n </div>\\n </form>\\n }\\n @if (errorMessage()) {\\n <div class=\\\"alert alert-danger mt-3\\\" role=\\\"alert\\\">\\n {{ errorMessage() }}\\n </div>\\n }\\n </mat-card-content>\\n @if (hasFooterContent()) {\\n <mat-card-footer>\\n <ng-container *ngTemplateOutlet=\\\"footerContent()\\\"></ng-container>\\n </mat-card-footer>\\n }\\n </mat-card>\\n</section>\\n\", styles: [\"#wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--mdc-theme-primary, #5c5f5c) 0%,var(--mdc-theme-secondary, #79747e) 100%);padding:20px}mat-card{width:100%;max-width:400px;border-radius:12px;box-shadow:0 8px 32px #0000001a}mat-card-header{text-align:center;margin-bottom:20px}mat-card-title{font-size:24px;font-weight:600;color:var(--mdc-theme-on-surface, #1c1b1f)}mat-form-field{width:100%}.w-100{width:100%}.d-flex{display:flex}.flex-column{flex-direction:column}.gap-3{gap:12px}.justify-content-center{justify-content:center}.align-items-center{align-items:center}.mt-3{margin-top:12px}.mt-2{margin-top:8px}.text-center{text-align:center}.p-4{padding:16px}.rounded{border-radius:12px}.alert-danger{background-color:var(--mdc-theme-error-container, #ffdad6);border-color:var(--mdc-theme-error, #ba1a1a);color:var(--mdc-theme-on-error-container, #410002);padding:12px;border-radius:4px;border:1px solid transparent}.row{display:flex;flex-wrap:wrap;margin:0 -15px}.col-xs-12,.col-sm-12,.col-md-12{flex:0 0 100%;max-width:100%;padding:0 15px}.m-t-10{margin-top:10px}.social{display:flex;justify-content:center}mat-button{border-radius:8px}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctYXV0aC9zcmMvbGliL3VpL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWF1dGgvc3JjL2xpYi91aS9sb2dpbi9sb2dpbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyREFBMkQ7QUFDM0QsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFVBQVUsRUFDVixtQkFBbUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsT0FBTyxFQUNQLGNBQWMsRUFDZCxhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7O0FBd0JoRixNQUFNLE9BQU8sY0FBYztJQUN6QixLQUFL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LHdWQUNSLE9BQU8sMklBQ1AsU0FBUyx5VUFDVCxhQUFhLDREQUViLFdBQVc7OzJGQU1GLGNBQWM7a0JBdEIxQixTQUFTOytCQUNFLFdBQVcsV0FDWjt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixTQUFTO3dCQUNULFdBQVc7cUJBQ1osbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzcmMvbGliL3ByZXNlbnRhdGlvbi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC50c1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBlZmZlY3QsXG4gIGNvbXB1dGVkLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBGb3JtR3JvdXAsXG4gIEZvcm1CdWlsZGVyLFxuICBWYWxpZGF0b3JzLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBBYnN0cmFjdENvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE1hdENhcmQsXG4gIE1hdENhcmRDb250ZW50LFxuICBNYXRDYXJkRm9vdGVyLFxuICBNYXRDYXJkSGVhZGVyLFxuICBNYXRDYXJkVGl0bGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRBbmNob3IsIE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IExvZ2luVXNlQ2FzZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9sb2dpbi51c2UtY2FzZSc7XG5pbXBvcnQgeyBSZWdpc3RlclVzZUNhc2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi91c2UtY2FzZXMvcmVnaXN0ZXIudXNlLWNhc2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY3AtbG9naW4nLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0Q2FyZCxcbiAgICBNYXRDYXJkSGVhZGVyLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdENhcmRUaXRsZSxcbiAgICBNYXRDYXJkQ29udGVudCxcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0SW5wdXQsXG4gICAgTWF0SWNvbixcbiAgICBNYXRCdXR0b24sXG4gICAgTWF0Q2FyZEZvb3RlcixcbiAgICBNYXRBbmNob3IsXG4gICAgTWF0Q2hlY2tib3gsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiBgLi9sb2dpbi5jb21wb25lbnQuaHRtbGAsXG4gIHN0eWxlVXJsczogWycuL2xvZ2luLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignTG9naW4nKTtcbiAgc2hvd1JlZ2lzdGVyQnV0dG9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHNob3dSZW1lbWJlck1lID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgLy8gQWRkaXRpb25hbCBmb3JtIGNvbnRyb2xzIHRoYXQgY2FuIGJlIHBhc3NlZCBmcm9tIHBhcmVudCBjb21wb25lbnRzXG4gIGFkZGl0aW9uYWxTaWduaW5Db250cm9scyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIEFic3RyYWN0Q29udHJvbD4+KHt9KTtcbiAgYWRkaXRpb25hbFNpZ251cENvbnRyb2xzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgQWJzdHJhY3RDb250cm9sPj4oe30pO1xuXG4gIC8vIEFkZGl0aW9uYWwgZmllbGQgdGVtcGxhdGVzXG4gIGFkZGl0aW9uYWxTaWduaW5GaWVsZHMgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG4gIGFkZGl0aW9uYWxTaWdudXBGaWVsZHMgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG5cbiAgLy8gRm9vdGVyIGNvbnRlbnQgdGVtcGxhdGVcbiAgZm9vdGVyQ29udGVudCA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcblxuICAvLyBDb21wdXRlZCBzaWduYWwgdG8gY2hlY2sgaWYgZm9vdGVyIGNvbnRlbnQgZXhpc3RzXG4gIGhhc0Zvb3RlckNvbnRlbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZvb3RlckNvbnRlbnQoKSAhPT0gbnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9naW5Vc2VDYXNlID0gaW5qZWN0KExvZ2luVXNlQ2FzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0ZXJVc2VDYXNlID0gaW5qZWN0KFJlZ2lzdGVyVXNlQ2FzZSk7XG5cbiAgLy8gQW5ndWxhciAyMCsgc2lnbmFsc1xuICBpc0xvZ2luTW9kZSA9IHNpZ25hbCh0cnVlKTtcbiAgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgZXJyb3JNZXNzYWdlID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHNpZ25pbkZvcm06IEZvcm1Hcm91cDtcbiAgc2lnbnVwRm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2lnbmluRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZW1haWw6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdXSxcbiAgICAgIHBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVtZW1iZXJNZTogW2ZhbHNlXSwgLy8gRGVmYXVsdCB0byBmYWxzZSAodW5jaGVja2VkKVxuICAgIH0pO1xuXG4gICAgdGhpcy5zaWdudXBGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkaXNwbGF5TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgICBwYXNzd29yZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildXSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEhhbmRsZSByZW1lbWJlck1lIGNvbnRyb2wgYmFzZWQgb24gc2hvd1JlbWVtYmVyTWUgaW5wdXRcbiAgICBpZiAoIXRoaXMuc2hvd1JlbWVtYmVyTWUoKSkge1xuICAgICAgLy8gUmVtb3ZlIHJlbWVtYmVyTWUgY29udHJvbCBpZiBub3QgbmVlZGVkXG4gICAgICB0aGlzLnNpZ25pbkZvcm0ucmVtb3ZlQ29udHJvbCgncmVtZW1iZXJNZScpO1xuICAgIH1cblxuICAgIC8vIEFkZCBhZGRpdGlvbmFsIGNvbnRyb2xzIHRvIHNpZ25pbiBmb3JtXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5hZGRpdGlvbmFsU2lnbmluQ29udHJvbHMoKSkuZm9yRWFjaCgoW2tleSwgY29udHJvbF0pID0+IHtcbiAgICAgIHRoaXMuc2lnbmluRm9ybS5hZGRDb250cm9sKGtleSwgY29udHJvbCk7XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYWRkaXRpb25hbCBjb250cm9scyB0byBzaWdudXAgZm9ybVxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYWRkaXRpb25hbFNpZ251cENvbnRyb2xzKCkpLmZvckVhY2goKFtrZXksIGNvbnRyb2xdKSA9PiB7XG4gICAgICB0aGlzLnNpZ251cEZvcm0uYWRkQ29udHJvbChrZXksIGNvbnRyb2wpO1xuICAgIH0pO1xuICB9XG5cbiAgc3dpdGNoTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9naW5Nb2RlLnNldCghdGhpcy5pc0xvZ2luTW9kZSgpKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQobnVsbCk7XG4gIH1cblxuICBzaWduSW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2lnbmluRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KG51bGwpO1xuXG4gICAgICAvLyBQcmVwYXJlIGxvZ2luIHJlcXVlc3Qgd2l0aCByZW1lbWJlck1lIGhhbmRsaW5nXG4gICAgICBjb25zdCBsb2dpblJlcXVlc3QgPSB7XG4gICAgICAgIC4uLnRoaXMuc2lnbmluRm9ybS52YWx1ZSxcbiAgICAgICAgLy8gSWYgc2hvd1JlbWVtYmVyTWUgaXMgZmFsc2UsIGRlZmF1bHQgcmVtZW1iZXJNZSB0byBmYWxzZVxuICAgICAgICByZW1lbWJlck1lOiB0aGlzLnNob3dSZW1lbWJlck1lKCkgPyAodGhpcy5zaWduaW5Gb3JtLnZhbHVlLnJlbWVtYmVyTWUgPz8gZmFsc2UpIDogZmFsc2VcbiAgICAgIH07XG5cbiAgICAgIHRoaXMubG9naW5Vc2VDYXNlLmV4ZWN1dGUobG9naW5SZXF1ZXN0KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldCgnRXJyb3IgYWwgaW5pY2lhciBzZXNpw7NuLiBWZXJpZmlxdWUgc3VzIGNyZWRlbmNpYWxlcy4nKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdMb2dpbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlclVzZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2lnbnVwRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KG51bGwpO1xuXG4gICAgICB0aGlzLnJlZ2lzdGVyVXNlQ2FzZS5leGVjdXRlKHRoaXMuc2lnbnVwRm9ybS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zaWdudXBGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy5pc0xvZ2luTW9kZS5zZXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJ0Vycm9yIGFsIHJlZ2lzdHJhciB1c3VhcmlvLiBJbnRlbnRlIG51ZXZhbWVudGUuJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignUmVnaXN0ZXIgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8c2VjdGlvbiBpZD1cIndyYXBwZXJcIiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICA8bWF0LWNhcmQgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4IHAtNCByb3VuZGVkXCI+XG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInRleHQtY2VudGVyXCI+e3sgdGl0bGUoKSB9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICBAaWYgKGlzTG9naW5Nb2RlKCkpIHtcbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2lnbmluRm9ybVwiIChuZ1N1Ym1pdCk9XCJzaWduSW4oKVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Vc3VhcmlvPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHN1IHVzdWFyaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkNvbnRyYXNlw7FhPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiSW5ncmVzZSBzdSBjb250cmFzZcOxYVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8IS0tIFJlbWVtYmVyIE1lIGNoZWNrYm94IC0gY29uZGl0aW9uYWwgLS0+XG4gICAgICAgIEBpZiAoc2hvd1JlbWVtYmVyTWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJyZW1lbWJlck1lXCI+XG4gICAgICAgICAgICBSZWNvcmRhcm1lXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHNpZ25pbiBmaWVsZHMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRpdGlvbmFsU2lnbmluRmllbGRzKClcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtM1wiPlxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFzaWduaW5Gb3JtLnZhbGlkIHx8IGlzTG9hZGluZygpXCIgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgICBJbmdyZXNhbmRvLi4uXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+SW5ncmVzYXIgPG1hdC1pY29uPmxvZ2luPC9tYXQtaWNvbj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG10LTJcIj5cbiAgICAgICAgICBAaWYgKHNob3dSZWdpc3RlckJ1dHRvbigpKSB7XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3dpdGNoTW9kZSgpXCI+XG4gICAgICAgICAgICDCv05vIHRpZW5lcyBjdWVudGE/IFJlZ8Otc3RyYXRlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzaWdudXBGb3JtXCIgKG5nU3VibWl0KT1cInJlZ2lzdGVyVXNlcigpXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPk5vbWJyZTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiSW5ncmVzZSBzdSBub21icmVcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICA8bWF0LWxhYmVsPkVtYWlsPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJlbWFpbFwiIHBsYWNlaG9sZGVyPVwiSW5ncmVzZSBzdSBlbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+Q29udHJhc2XDsWE8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJJbmdyZXNlIHN1IGNvbnRyYXNlw7FhXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiAvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDwhLS0gQWRkaXRpb25hbCBzaWdudXAgZmllbGRzIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbFNpZ251cEZpZWxkcygpXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTNcIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIhc2lnbnVwRm9ybS52YWxpZCB8fCBpc0xvYWRpbmcoKVwiIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgUmVnaXN0cmFuZG8uLi5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5SZWdpc3RyYXJzZSA8bWF0LWljb24+cGVyc29uX2FkZDwvbWF0LWljb24+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0yXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3dpdGNoTW9kZSgpXCI+wr9ZYSB0aWVuZXMgY3VlbnRhPyBJbmljaWEgc2VzacOzbjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICAgIH1cbiAgICAgIEBpZiAoZXJyb3JNZXNzYWdlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgbXQtM1wiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UoKSB9fVxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIEBpZiAoaGFzRm9vdGVyQ29udGVudCgpKSB7XG4gICAgPG1hdC1jYXJkLWZvb3Rlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJDb250ZW50KClcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cbiAgICB9XG4gIDwvbWF0LWNhcmQ+XG48L3NlY3Rpb24+XG4iXX0=","// src/lib/presentation/components/index.ts\nexport { LoginComponent } from './login.component';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvbG9naW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJlc2VudGF0aW9uL2NvbXBvbmVudHMvaW5kZXgudHNcbmV4cG9ydCB7IExvZ2luQ29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi5jb21wb25lbnQnO1xuIl19","// src/lib/presentation/index.ts\nexport * from './stores';\nexport * from './login';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvdWkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQWdDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9wcmVzZW50YXRpb24vaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbG9naW4nO1xuIl19","import { AuthRepository } from '../domain/repositories/auth.repository';\nimport { AuthHttpRepository } from '../data/repositories/auth-http.repository';\nexport const authProviders = [\n {\n provide: AuthRepository,\n useClass: AuthHttpRepository,\n },\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvcHJvdmlkZXJzL2F1dGgucHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWU7SUFDdkM7UUFDRSxPQUFPLEVBQUUsY0FBYztRQUN2QixRQUFRLEVBQUUsa0JBQWtCO0tBQzdCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNyYy9saWIvcHJvdmlkZXJzL2F1dGgucHJvdmlkZXJzLnRzXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFJlcG9zaXRvcnkgfSBmcm9tICcuLi9kb21haW4vcmVwb3NpdG9yaWVzL2F1dGgucmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBBdXRoSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuLi9kYXRhL3JlcG9zaXRvcmllcy9hdXRoLWh0dHAucmVwb3NpdG9yeSc7XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvdmlkZXJzOiBQcm92aWRlcltdID0gW1xuICB7XG4gICAgcHJvdmlkZTogQXV0aFJlcG9zaXRvcnksXG4gICAgdXNlQ2xhc3M6IEF1dGhIdHRwUmVwb3NpdG9yeSxcbiAgfSxcbl07XG4iXX0=","// src/lib/providers/index.ts\nexport * from './auth.providers';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9saWIvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUE2QjtBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL2xpYi9wcm92aWRlcnMvaW5kZXgudHNcbmV4cG9ydCAqIGZyb20gJy4vYXV0aC5wcm92aWRlcnMnO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1hdXRoL3NyYy9hY29udHBsdXMtbmctYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1.TokenRepository","catchError"],"mappings":"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"}