{"version":3,"file":"kinde-angular.mjs","sources":["../../../projects/kinde-angular/src/lib/cookie-manager.ts","../../../projects/kinde-angular/src/lib/session-manager.ts","../../../projects/kinde-angular/src/lib/kinde-client-factory.service.ts","../../../projects/kinde-angular/src/lib/auth-state.service.ts","../../../projects/kinde-angular/src/lib/kinde-angular.service.ts","../../../projects/kinde-angular/src/lib/tokens/config.token.ts","../../../projects/kinde-angular/src/lib/kinde-angular.module.ts","../../../projects/kinde-angular/src/lib/auth.guard.ts","../../../projects/kinde-angular/src/lib/feature-flag.directive.ts","../../../projects/kinde-angular/src/lib/provideKinde.ts","../../../projects/kinde-angular/src/public-api.ts","../../../projects/kinde-angular/src/kinde-angular.ts"],"sourcesContent":["import * as Cookies from 'es-cookie';\n\nexport class CookieManager {\n  static getCookie(name: string): string | undefined {\n    return Cookies.get(name);\n  }\n\n  static setCookie(name: string, value: string, options = {}): void {\n    Cookies.set(name, value, {\n      path: '',\n      secure: true,\n      sameSite: 'lax',\n      ...options\n    });\n  }\n\n  static deleteCookie(name: string, options: Cookies.CookieAttributes): void {\n    Cookies.remove(name, options);\n  }\n}\n","import { SessionManager } from \"@kinde-oss/kinde-typescript-sdk\";\nimport { CookieManager } from \"./cookie-manager\";\n\n/**\n * Typing seems a bit off here, created an issue: https://github.com/kinde-oss/kinde-typescript-sdk/issues/39\n */\ninterface BSessionManager extends SessionManager {\n  getSessionItemBrowser(key: string): Promise<string | null>;\n  setSessionItemBrowser(key: string, value: unknown): Promise<void>;\n  removeSessionItemBrowser(key: string): Promise<void>;\n}\n\nconst keysInCookie = ['refresh_token', 'access_token', 'acwpf-state-key', 'ac-state-key', 'id_token', 'user', 'post_login_redirect_url']\nconst memCache: Record<string, string> = {};\nconst sessionManager: BSessionManager = {\n  async getSessionItemBrowser(key: string) {\n    return CookieManager.getCookie(key) || memCache[key];\n  },\n  async getSessionItem(key: string) {\n    return this.getSessionItemBrowser(key);\n  },\n  async setSessionItemBrowser(key: string, value: unknown) {\n    const inCookieList = keysInCookie.find(k => key.includes(k));\n\n    if (inCookieList) {\n      CookieManager.setCookie(key, value as string);\n    } else {\n      memCache[key] = value as string;\n    }\n  },\n  async setSessionItem(key: string, value: unknown) {\n    await this.setSessionItemBrowser(key, value);\n  },\n  async removeSessionItemBrowser(key: string) {\n    for (const key in memCache) {\n      delete memCache[key]\n    }\n    CookieManager.deleteCookie(key, { path: '' });\n  },\n  async removeSessionItem(key: string) {\n    await this.removeSessionItemBrowser(key);\n  },\n  async destroySession() {\n    for (const key in memCache) {\n      delete memCache[key]\n    }\n    for (const key of keysInCookie) {\n      CookieManager.deleteCookie(key, { path: '' });\n    }\n  }\n}\n\nexport { sessionManager };\n","import { createKindeBrowserClient } from \"@kinde-oss/kinde-typescript-sdk\";\nimport { KindeConfigInterface } from \"./interfaces/kinde-config.interface\";\nimport { isPlatformBrowser } from \"@angular/common\";\nimport { InjectionToken, VERSION } from \"@angular/core\";\nimport { sessionManager } from \"./session-manager\";\n\nexport class KindeClientFactory {\n  static createClient(config: KindeConfigInterface, platform: Object) {\n    if(isPlatformBrowser(platform)) {\n      return createKindeBrowserClient({\n        framework: 'Angular',\n        frameworkVersion: VERSION.full,\n        ...config,\n        sessionManager: sessionManager\n      });\n    }\n    return null;\n  }\n}\n\nexport const KINDE_FACTORY_TOKEN = new InjectionToken<KindeClientFactory>('KINDE_FACTORY_TOKEN');\n","import { Inject, Injectable } from '@angular/core';\nimport {\n  BehaviorSubject,\n  filter,\n  ReplaySubject,\n  distinctUntilChanged,\n  switchMap,\n  defer,\n  shareReplay,\n  concatMap,\n  of,\n  scan,\n  merge,\n  mergeMap,\n  combineLatestWith\n} from \"rxjs\";\nimport { KindeClient } from \"./interfaces/kinde-client.interface\";\nimport { KINDE_FACTORY_TOKEN } from \"./kinde-client-factory.service\";\nimport { UserType } from \"@kinde-oss/kinde-typescript-sdk\";\n\ninterface TokenStreamState {\n  prev: string | null;\n  current: string | null;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuthStateService {\n  /**\n   * A variant of Subject that requires an initial value and emits its current value whenever it is subscribed to.\n   * We use BehaviorSubject because we want the initial value to be true\n   */\n  private isLoadingSubject$ = new BehaviorSubject<boolean>(true);\n  /**\n   * A variant of Subject that \"replays\" old values to new subscribers by emitting them when they first subscribe.\n   * We buffer the last emitted value and emit it to new subscribers if subscribed.\n   */\n  private _accessToken$ = new ReplaySubject<string>(1);\n\n  private _user$ = new ReplaySubject<UserType>(1);\n\n  private accessTokenStream$ = this._accessToken$.pipe(\n    scan((acc: TokenStreamState, token: string) => ({\n      prev: acc.current,\n      current: token,\n    }), { prev: null, current: null }),\n    filter(state => state.current !== state.prev),\n  );\n\n  isLoading$ = this.isLoadingSubject$.asObservable();\n  isAuthenticatedStream$ = this.isLoading$.pipe(\n    filter(isLoading => !isLoading && this.kindeClient !== null),\n    distinctUntilChanged(),\n    switchMap(() =>\n      merge(\n        defer(() => this.kindeClient!.isAuthenticated()),\n        this.accessTokenStream$.pipe(\n          mergeMap(() => this.kindeClient!.isAuthenticated()),\n        )\n      )\n    )\n  );\n\n  isAuthenticated$ = this.isAuthenticatedStream$.pipe(\n    distinctUntilChanged(),\n    shareReplay(1)\n  );\n\n  private _userCache$ = this.isAuthenticatedStream$.pipe(\n    filter(_ => this.kindeClient !== null),\n    switchMap(isAuthenticated =>\n      isAuthenticated ? this.kindeClient!.getUser() : of(null)\n    ),\n    shareReplay(1)\n  );\n\n  user$ = this.isAuthenticatedStream$.pipe(\n    filter(_ => this.kindeClient !== null),\n    combineLatestWith(this._userCache$),\n    concatMap(([isAuthenticated, cachedUser]) => {\n        if (cachedUser) {\n          return of(cachedUser)\n        }\n        return isAuthenticated ? this.kindeClient!.getUserProfile() : of(null)\n      }\n    ),\n  );\n\n  accessToken$ = this.isAuthenticatedStream$.pipe(\n    filter(_ => this.kindeClient !== null),\n    concatMap(isAuthenticated =>\n      isAuthenticated ? this.kindeClient!.getToken() : of(null)\n    ),\n  )\n\n  constructor(@Inject(KINDE_FACTORY_TOKEN) private kindeClient: KindeClient | null) {\n  }\n\n  setIsLoading(isLoading: boolean): void {\n    this.isLoadingSubject$.next(isLoading);\n  }\n\n  setAccessToken(accessToken: string): void {\n    this._accessToken$.next(accessToken);\n  }\n\n  setUser(user: UserType): void {\n    this._user$.next(user);\n  }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport {\n  defer,\n  filter,\n  from,\n  iif,\n  map,\n  Observable,\n  of,\n  Subject,\n  switchMap,\n  takeUntil,\n  tap\n} from \"rxjs\";\nimport { KINDE_FACTORY_TOKEN } from \"./kinde-client-factory.service\";\nimport { KindeClient } from \"./interfaces/kinde-client.interface\";\nimport { AuthStateService } from \"./auth-state.service\";\nimport { ClaimTokenType, FlagType, GetFlagType, RegisterURLOptions, UserType } from \"@kinde-oss/kinde-typescript-sdk\";\nimport { IClaim } from \"./interfaces/claim.interface\";\nimport { sessionManager } from \"./session-manager\";\nimport { DOCUMENT, isPlatformBrowser, Location } from \"@angular/common\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class KindeAngularService implements OnDestroy {\n  private unsubscribe$ = new Subject<void>();\n\n  user$: Observable<UserType | null> = this.authState.user$;\n  isAuthenticated$: Observable<boolean> = this.authState.isAuthenticated$;\n  isLoading$: Observable<boolean> = this.authState.isLoading$;\n  accessToken$: Observable<string | null> = this.authState.accessToken$;\n\n  constructor(\n    @Inject(KINDE_FACTORY_TOKEN) private kindeClient: KindeClient | null,\n    @Inject(DOCUMENT) private document: Document,\n    private location: Location,\n    private authState: AuthStateService\n  ) {\n    this.shouldHandleCallback()\n      .pipe(\n        filter(_ => this.kindeClient !== null),\n        switchMap(shouldHandleCallback =>\n          iif(\n            () => shouldHandleCallback,\n            defer(() => this.handleCallback()),\n            of(false)\n          ),\n        ),\n        tap(() =>\n          authState.setIsLoading(false)\n        ),\n        takeUntil(this.unsubscribe$)\n      ).subscribe();\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  getClaim<T>(claim: string, type?: ClaimTokenType): Observable<IClaim<T> | null> {\n    // todo: make reusable function to handle isAuthenticated\n    return this.isAuthenticated$.pipe(\n      filter(_ => this.kindeClient !== null),\n      switchMap(isAuthenticated =>\n        iif(\n          () => isAuthenticated,\n          from(this.kindeClient!.getClaim(claim, type)) as Observable<IClaim<T>>,\n          of(null)\n        )\n    ));\n  };\n\n  getUserOrganizations(): Observable<{ orgCodes: string[] }> {\n    // todo: check L59\n    return this.isAuthenticated$.pipe(\n      filter(_ => this.kindeClient !== null),\n      switchMap(isAuthenticated =>\n        iif(\n          () => isAuthenticated,\n          from(this.kindeClient!.getUserOrganizations()),\n          of({ orgCodes: [] })\n        )\n    ));\n  }\n\n  getAccessToken(): Promise<string> {\n    if(!this.kindeClient) throw new Error(\"kindeClient is null\");\n    return this.kindeClient.getToken();\n  }\n\n  getFeatureFlag(code: string, defaultValue?: string | number | boolean | undefined, flagType?: keyof FlagType): Promise<GetFlagType> {\n    if(!this.kindeClient) throw new Error(\"kindeClient is null\");\n    return this.kindeClient.getFlag(code, defaultValue, flagType);\n  }\n\n  async getFeatureFlagEnabled(code: string, defaultValue?: boolean | undefined): Promise<boolean> {\n    const BOOLEAN_FLAG_TYPE = 'b';\n    return (await this.getFeatureFlag(code, defaultValue, BOOLEAN_FLAG_TYPE)).value as boolean;\n  }\n\n  async login(options?: RegisterURLOptions): Promise<void> {\n    if(!this.kindeClient) throw new Error(\"kindeClient is null\");\n    const loginUrl = await this.kindeClient.login(options);\n    if (options?.post_login_redirect_url) {\n      await sessionManager.setSessionItemBrowser('post_login_redirect_url', options.post_login_redirect_url);\n    }\n    this.document.location.href = loginUrl.href;\n  }\n\n  async logout(): Promise<void> {\n    if(!this.kindeClient) throw new Error(\"kindeClient is null\");\n    const logoutUrl = await this.kindeClient.logout();\n    this.document.location.href = logoutUrl.href;\n  }\n\n  async register(options?: RegisterURLOptions): Promise<void> {\n    if(!this.kindeClient) throw new Error(\"kindeClient is null\");\n    const registerUrl = await this.kindeClient.register(options);\n    this.document.location.href = registerUrl.href;\n  }\n\n  private shouldHandleCallback(): Observable<boolean> {\n    return of(this.document.location.search)\n      .pipe(\n        map(search => new URLSearchParams(search)),\n        map(params => params.has('code') || params.has('state'))\n      );\n  }\n\n  async handleCallback(): Promise<void> {\n    try {\n      await this.kindeClient!.handleRedirectToApp(new URL(this.document.location.href));\n      const token = await this.kindeClient!.getToken();\n      this.authState.setAccessToken(token);\n      let url = new URL(this.document.location.href);\n      url.search = '';\n\n      const loginRedirectUrl = await sessionManager.getSessionItemBrowser('post_login_redirect_url');\n      if (loginRedirectUrl) {\n        url = new URL(loginRedirectUrl);\n        await sessionManager.removeSessionItemBrowser('post_login_redirect_url');\n      }\n      this.document.location.href = url.href;\n      this.location.go(url.toString());\n    } catch (e) {\n      console.log(e);\n    }\n  }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { KindeConfigInterface } from \"../interfaces/kinde-config.interface\";\n\nexport const kindeConfigToken = new InjectionToken<KindeConfigInterface>('[kinde angular] configToken');\n","import { ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core';\nimport { KindeAngularService } from \"./kinde-angular.service\";\nimport { KINDE_FACTORY_TOKEN, KindeClientFactory } from \"./kinde-client-factory.service\";\nimport { KindeConfigInterface } from \"./interfaces/kinde-config.interface\";\nimport { kindeConfigToken } from \"./tokens/config.token\";\n\n@NgModule()\nexport class KindeAngularModule {\n  static forRoot(config?: KindeConfigInterface): ModuleWithProviders<KindeAngularModule> {\n    return {\n      ngModule: KindeAngularModule,\n      providers: [\n        KindeAngularService,\n        {\n          provide: kindeConfigToken,\n          useValue: config\n        },\n        {\n          provide: KINDE_FACTORY_TOKEN,\n          useFactory: KindeClientFactory.createClient,\n          deps: [kindeConfigToken, PLATFORM_ID]\n        }\n      ]\n    }\n  }\n}\n","import { inject } from \"@angular/core\";\nimport { KindeAngularService } from \"./kinde-angular.service\";\nimport { take, tap } from \"rxjs\";\nimport { CanActivateFn, CanMatchFn, Router, UrlTree } from \"@angular/router\";\n\nexport const canMatchAuthGuard: CanMatchFn = () => {\n  const authService = inject(KindeAngularService);\n  return authService.isAuthenticated$.pipe(take(1));\n}\n\nexport const canActivateAuthGuard: CanActivateFn = () => {\n  const authService = inject(KindeAngularService);\n  return authService.isAuthenticated$.pipe(\n    take(1),\n    tap(async isAuthenticated => {\n      if (!isAuthenticated) {\n        await authService.login();\n      }\n    })\n  );\n}\n\nexport const featureFlagGuard = (flagName: string, redirect?: string): CanActivateFn => {\n  return async (): Promise<boolean | UrlTree> => {\n    const authService = inject(KindeAngularService);\n    const router = inject(Router);\n    const isEnabled = await authService.getFeatureFlagEnabled(flagName);\n\n    return isEnabled || router.createUrlTree([redirect || '/']);\n  }\n};\n","import { Directive, inject, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { KindeAngularService } from \"./kinde-angular.service\";\n\n@Directive({ selector: '[featureFlag]', standalone: true })\nexport class FeatureFlagDirective implements OnInit {\n  @Input()\n  featureFlag!: string;\n  @Input()\n  featureFlagElse?: TemplateRef<unknown>;\n\n  private templateRef = inject(TemplateRef<unknown>);\n  private viewContainerRef = inject(ViewContainerRef);\n  private kindeAngularService = inject(KindeAngularService);\n\n  async ngOnInit() {\n    try {\n      const featureFlag = await this.kindeAngularService.getFeatureFlag(this.featureFlag);\n      featureFlag.value ? this.onIf() : this.onElse();\n    } catch (error) {\n      this.onElse();\n    }\n  }\n\n  private onIf(): void {\n    this.createView(this.templateRef);\n  }\n\n  private onElse(): void {\n    if (!this.featureFlagElse) {\n      return;\n    }\n\n    this.createView(this.featureFlagElse);\n  }\n\n  private createView(templateRef: TemplateRef<unknown>): void {\n    this.viewContainerRef.createEmbeddedView(templateRef);\n  }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, PLATFORM_ID } from \"@angular/core\";\nimport { KindeConfigInterface } from \"./interfaces/kinde-config.interface\";\nimport { KindeAngularService } from \"./kinde-angular.service\";\nimport { kindeConfigToken } from \"./tokens/config.token\";\nimport { KINDE_FACTORY_TOKEN, KindeClientFactory } from \"./kinde-client-factory.service\";\n\nexport function provideKinde(config?: KindeConfigInterface): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    KindeAngularService,\n    {\n      provide: kindeConfigToken,\n      useValue: config\n    },\n    {\n      provide: KINDE_FACTORY_TOKEN,\n      useFactory: KindeClientFactory.createClient,\n      deps: [kindeConfigToken, PLATFORM_ID]\n    }\n  ])\n}\n","/*\n * Public API Surface of kinde-angular\n */\n\nexport * from './lib/kinde-angular.service';\nexport * from './lib/kinde-angular.module';\nexport * from './lib/auth.guard';\nexport * from './lib/feature-flag.directive';\nexport * from './lib/provideKinde';\n\nexport { kindeConfigToken } from './lib/tokens/config.token';\n\nexport {\n  GrantType,\n} from '@kinde-oss/kinde-typescript-sdk';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AuthStateService"],"mappings":"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"}