{"version":3,"file":"ng-supabase-core.mjs","sources":["../../../../libs/core/src/lib/array/remove-item.ts","../../../../libs/core/src/lib/array/remove-where.ts","../../../../libs/core/src/lib/sign-in/social-sign-in.ts","../../../../libs/core/src/lib/format/trim-end.function.ts","../../../../libs/core/src/lib/format/trim-start.function.ts","../../../../libs/core/src/lib/supabase-config.ts","../../../../libs/core/src/lib/type-check/is-string.ts","../../../../libs/core/src/lib/route.service.ts","../../../../libs/core/src/lib/logging/log-level.ts","../../../../libs/core/src/lib/logging/log.service.ts","../../../../libs/core/src/lib/supabase.service.ts","../../../../libs/core/src/lib/storage/persistent-storage.service.ts","../../../../libs/core/src/lib/sign-in/sign-in.component.ts","../../../../libs/core/src/lib/sign-in/sign-in.component.html","../../../../libs/core/src/lib/crypto/uuid.ts","../../../../libs/core/src/lib/notify/notify.service.ts","../../../../libs/core/src/lib/set-password/set-password.component.ts","../../../../libs/core/src/lib/set-password/set-password.component.html","../../../../libs/core/src/lib/reset-password/reset-password.component.ts","../../../../libs/core/src/lib/reset-password/reset-password.component.html","../../../../libs/core/src/lib/format/trim.function.ts","../../../../libs/core/src/lib/auth-guard/is-signed-in.guard.ts","../../../../libs/core/src/lib/register/register.component.ts","../../../../libs/core/src/lib/register/register.component.html","../../../../libs/core/src/lib/user-avatar/user-avatar.component.ts","../../../../libs/core/src/lib/user-avatar/user-avatar.component.html","../../../../libs/core/src/lib/user-avatar-button/user-avatar-button.component.ts","../../../../libs/core/src/lib/user-avatar-button/user-avatar-button.component.html","../../../../libs/core/src/lib/active-user-avatar-button/active-user-avatar-button.component.ts","../../../../libs/core/src/lib/active-user-avatar-button/active-user-avatar-button.component.html","../../../../libs/core/src/lib/register-or-sign-in/register-or-sign-in.component.ts","../../../../libs/core/src/lib/register-or-sign-in/register-or-sign-in.component.html","../../../../libs/core/src/lib/initials.pipe.ts","../../../../libs/core/src/ng-supabase-core.ts"],"sourcesContent":["/**\n * Removes an item from an array.\n * @param list The list to remove the item from.\n * @param item The item to remove out of the list.\n */\nexport function removeItem(list: unknown[], item: unknown): void {\n  const index = list.findIndex((i) => i === item);\n  list.splice(index, 1);\n}\n","// Local.\nimport { removeItem } from './remove-item';\n\n/**\n * Removes items from a list based on a predicate function.\n * @param list The list to remove items from.\n * @param predicate A function that will be called for each item\n * to determine whether to remove that item from the list or not.\n */\nexport function removeWhere<T>(list: T[], predicate: (value: T) => boolean) {\n  for (const item of list) {\n    const remove = predicate(item);\n    if (remove) {\n      removeItem(list, item);\n    }\n  }\n}\n","export enum SocialSignIn {\n  Apple = 'apple',\n  Azure = 'microsoft',\n  Bitbucket = 'bitbucket',\n  Discord = 'discord',\n  Facebook = 'facebook',\n  Figma = 'figma',\n  GitHub = 'github',\n  GitLab = 'gitlab',\n  Google = 'google',\n  Kakao = 'kakao',\n  Keycloak = 'keycloak',\n  LinkedIn = 'linkedin',\n  Notion = 'notion',\n  Twitch = 'twitch',\n  Twitter = 'twitter',\n  Slack = 'slack',\n  Spotify = 'spotify',\n  WorkOS = 'workos',\n  Zoom = 'zoom',\n}\n\nexport interface SocialSignInItem {\n  title: string;\n  value: SocialSignIn;\n  icon?: string;\n}\n\nexport const ALL_SOCIAL_SIGN_INS = Object.values(SocialSignIn);\nexport const ALL_SOCIAL_SIGN_IN_ITEMS = Object.entries(SocialSignIn).map(\n  ([title, value]) => {\n    return { title, value };\n  }\n);\n\nexport function toSocialItem(social: string[]): SocialSignInItem[];\nexport function toSocialItem(social: string): SocialSignInItem;\nexport function toSocialItem(\n  social: string | string[]\n): SocialSignInItem | SocialSignInItem[] {\n  const asArray = social as string[];\n  const asSingle = social as string;\n  return Array.isArray(social)\n    ? asArray.map(toSingleSocialItem)\n    : toSingleSocialItem(asSingle);\n}\n\nfunction toSingleSocialItem(socialValue: string): SocialSignInItem {\n  const item = ALL_SOCIAL_SIGN_IN_ITEMS.find((s) => s.value === socialValue);\n  if (!item) {\n    throw new Error(`No social sign in item with value '${socialValue}' found`);\n  }\n\n  return item;\n}\n","export function trimEnd(value: string, trimValue = ' ') {\n  const trimLength = trimValue.length;\n  return value.endsWith(trimValue)\n    ? value.substring(0, value.length - trimLength)\n    : value;\n}\n","export function trimStart(value: string, trimValue = ' ') {\n  const trimLength = trimValue.length;\n  return value.startsWith(trimValue) ? value.substring(trimLength) : value;\n}\n","// Angular.\nimport { UrlTree } from '@angular/router';\n\n// 3rd party.\nimport { BehaviorSubject } from 'rxjs';\n\n// Local.\nimport { LogConfig } from './logging/log-config';\nimport { trimEnd } from './format/trim-end.function';\nimport {\n  SocialSignIn,\n  toSocialItem,\n  SocialSignInItem,\n} from './sign-in/social-sign-in';\n\nexport const DEFAULT_ROUTES: ComponentRoutes = {\n  main: '/',\n  signIn: '/sign-in',\n  register: '/register',\n  registerOrSignIn: '/auth',\n  setPassword: '/set-password',\n  resetPassword: '/reset-password',\n  postSignOut: '/sign-in',\n};\n\ninterface BaseSupabaseConfigProperties {\n  apiKey: string;\n  mainRoute?: string;\n  signIn?: SignInConfigProperties;\n  logging?: LogConfig;\n  register?: RegisterProperties;\n  setPassword?: SetPasswordProperties;\n  routes?: Partial<ComponentRoutes>;\n  profile?: ProfileProperties;\n}\n\ninterface SupabaseConfigPropertiesByUrl extends BaseSupabaseConfigProperties {\n  apiUrl: string;\n}\n\ninterface SupabaseConfigPropertiesByProject\n  extends BaseSupabaseConfigProperties {\n  project: string;\n}\n\nexport type SupabaseConfigProperties =\n  | SupabaseConfigPropertiesByUrl\n  | SupabaseConfigPropertiesByProject;\n\ninterface ComponentRoutes {\n  main: string;\n  signIn: string;\n  register: string;\n  registerOrSignIn: string;\n  setPassword: string;\n  resetPassword: string;\n  userProfile?: string;\n  postSignOut?: string;\n}\n\ninterface UserRegistrationMetadata {\n  label: string;\n  field: string;\n  type?: 'text' | 'number';\n  required?: boolean;\n  defaultValue?: string | number;\n}\n\ninterface RegisterProperties {\n  title?: string;\n  metadata?: UserRegistrationMetadata[];\n}\n\ninterface ProfileProperties {\n  table?: string;\n  avatarField?: string;\n  firstNameField?: string;\n  lastNameField?: string;\n}\n\ntype SocialSignInFn = (social: SocialSignIn) => boolean | void;\n\ninterface SignInConfigProperties {\n  title?: string;\n  magicLinks?: boolean;\n  rememberMe?: boolean;\n  socials?: SocialSignIn[];\n  socialIconsRoot?: string;\n  rememberMeStorageKey?: string;\n  otpEnabled?: boolean;\n  otpLength?: number;\n  redirectTo?: string | string[] | UrlTree | null | undefined;\n  onSocialSignIn?: SocialSignInFn;\n}\n\ninterface ApiInfo {\n  url: string;\n  key: string;\n}\n\ninterface SetPasswordProperties {\n  title?: string;\n  requireConfirm?: boolean;\n  showMessageOnSave?: boolean;\n  redirectTo?: string | string[] | UrlTree | null | undefined;\n}\n\nclass SetPasswordConfig implements SetPasswordProperties {\n  title = '';\n  requireConfirm = true;\n  showMessageOnSave = true;\n\n  constructor(init?: Partial<SetPasswordProperties>) {\n    Object.assign(this, init);\n  }\n}\n\nclass ProfileConfig implements ProfileProperties {\n  table = '';\n  userIdField = 'user_id';\n  firstNameField = 'first_name';\n  lastNameField = 'last_name';\n  avatarField = 'avatar';\n\n  constructor(init?: Partial<ProfileProperties>) {\n    Object.assign(this, init);\n  }\n}\n\nclass RegisterConfig implements RegisterConfig {\n  title = '';\n  metadata: UserRegistrationMetadata[] = [];\n\n  constructor(init?: Partial<RegisterProperties>) {\n    Object.assign(this, init);\n    this.metadata = this.metadata || [];\n  }\n}\n\nexport class SignInConfig implements SignInConfigProperties {\n  title = '';\n  magicLinks = true;\n  socials: SocialSignIn[] = [];\n  rememberMe = true;\n  socialIconsRoot = 'https://supabase.com/dashboard/img/icons/';\n  socialSignInItems: SocialSignInItem[] = [];\n  redirectTo?: string | string[] | UrlTree | null | undefined;\n  rememberMeStorageKey = 'supabase.auth.info';\n  otpEnabled = true;\n  otpLength = 6;\n  onSocialSignIn?: SocialSignInFn;\n\n  constructor(init?: Partial<SignInConfig>) {\n    Object.assign(this, init);\n    this.setSocialSignInItems();\n  }\n\n  private setSocialSignInItems(): void {\n    for (const social of this.socials) {\n      const item = toSocialItem(social);\n      if (this.socialIconsRoot) {\n        const root = trimEnd(this.socialIconsRoot, '/');\n        item.icon = `${root}/${item.value}-icon.svg`;\n      }\n\n      this.socialSignInItems.push(item);\n    }\n  }\n}\n\nexport class SupabaseConfig {\n  signIn: SignInConfig;\n  api: BehaviorSubject<{ url: string; key: string }>;\n  logging?: LogConfig;\n  mainRoute = '/';\n  setPassword: SetPasswordConfig;\n  register: RegisterConfig;\n  routes: ComponentRoutes = DEFAULT_ROUTES;\n  redirectParamName: string | null | undefined = 'redirect';\n  profile: ProfileConfig;\n\n  constructor(init: SupabaseConfigProperties) {\n    Object.assign(this.routes, init.routes);\n    const options = init as SupabaseConfigPropertiesByUrl &\n      SupabaseConfigPropertiesByProject;\n\n    const url = SupabaseConfig.toApiUrl(options.apiUrl || options.project);\n    this.logging = init.logging;\n    this.setPassword = new SetPasswordConfig(init.setPassword);\n    this.signIn = new SignInConfig(init.signIn);\n    this.register = new RegisterConfig(init.register);\n    this.profile = new ProfileConfig(init.profile);\n    this.api = new BehaviorSubject<ApiInfo>({\n      url: url,\n      key: init.apiKey,\n    });\n  }\n\n  static toApiUrl(urlOrProjectId: string): string {\n    return urlOrProjectId.startsWith('http')\n      ? urlOrProjectId\n      : `https://${urlOrProjectId}.supabase.co`;\n  }\n}\n","export function isString(value: unknown): boolean {\n  return typeof value === 'string';\n}\n","// Angular.\nimport { Injectable } from '@angular/core';\nimport {\n  Router,\n  UrlTree,\n  ActivatedRoute,\n  NavigationExtras,\n  NavigationBehaviorOptions,\n} from '@angular/router';\n\n// Local.\nimport { trimEnd } from './format/trim-end.function';\nimport { trimStart } from './format/trim-start.function';\nimport { LocationStrategy } from '@angular/common';\nimport { SupabaseConfig } from './supabase-config';\nimport { isString } from './type-check/is-string';\n\n@Injectable({ providedIn: 'root' })\nexport class RouteService {\n  constructor(\n    private readonly router: Router,\n    private readonly config: SupabaseConfig,\n    private readonly route: ActivatedRoute,\n    private readonly locationStrategy: LocationStrategy\n  ) {}\n\n  getRootUrl(): string {\n    const [root] = window.location.href.split(this.router.url);\n    return root;\n  }\n\n  appendRoute(route: string): string {\n    const root = trimEnd(this.getRootUrl(), '/');\n    return this.join(root, route);\n  }\n\n  join(...parts: string[]): string {\n    let result = '';\n    let i = 0;\n\n    for (const part of parts) {\n      const isLast = i === parts.length - 1;\n\n      if (isLast) {\n        break;\n      }\n\n      const nextPart = parts[i + 1];\n      const trimmed1 = trimEnd(part, '/');\n      const trimmed2 = trimStart(nextPart, '/');\n      result += trimmed2 ? `${trimmed1}/${trimmed2}` : trimmed1;\n      i++;\n    }\n\n    return result;\n  }\n\n  getRedirectParamValue(): string | null {\n    const { redirectParamName } = this.config;\n    return redirectParamName\n      ? this.route.snapshot.queryParams[redirectParamName]\n      : null;\n  }\n\n  constructAbsoluteUrl(...appendRoutePaths: string[]): string {\n    const baseHref = this.locationStrategy.getBaseHref();\n    return this.join(location.origin, baseHref, ...appendRoutePaths);\n  }\n\n  goTo(route: string[], options?: NavigationExtras): Promise<boolean>;\n  goTo(\n    route: string | UrlTree,\n    options?: NavigationBehaviorOptions\n  ): Promise<boolean>;\n  goTo(\n    route: string | string[] | UrlTree,\n    options?: NavigationExtras | NavigationBehaviorOptions\n  ): Promise<boolean> {\n    const asString = route as string;\n    const isAbsoluteUrl = isString(route) && asString.startsWith('http');\n\n    if (isAbsoluteUrl) {\n      const root = this.getRootUrl();\n      route = trimStart(asString, root);\n    }\n\n    return Array.isArray(route)\n      ? this.router.navigate(route as string[], options as NavigationExtras)\n      : this.router.navigateByUrl(route as string | UrlTree, options);\n  }\n}\n","export enum LogLevel {\n  Trace,\n  Debug,\n  Info,\n  Warn,\n  Error,\n  Fatal,\n}\n","// Angular.\nimport { Injectable } from '@angular/core';\n\n// Local.\nimport { LogLevel } from './log-level';\nimport { KeyValue } from '../key-value';\nimport { LogConfig } from './log-config';\nimport { SupabaseConfig } from '../supabase-config';\n\ninterface LogEntry {\n  level: LogLevel;\n  timestamp: Date;\n  message: string;\n  error?: Error;\n}\n\nconst DEFAULT_LOG_CONFIG: Required<LogConfig> = {\n  logLevel: LogLevel.Warn,\n  enabled: true,\n  persistLogs: false,\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LogService {\n  private readonly logs: LogEntry[] = [];\n  private readonly config: Required<LogConfig>;\n  private readonly consoleMap: KeyValue<(...data: unknown[]) => void> = {};\n\n  constructor(config: SupabaseConfig) {\n    this.config = { ...DEFAULT_LOG_CONFIG, ...config.logging };\n    this.consoleMap[LogLevel.Trace] = console.trace;\n    this.consoleMap[LogLevel.Debug] = console.debug;\n    this.consoleMap[LogLevel.Info] = console.info;\n    this.consoleMap[LogLevel.Warn] = console.warn;\n    this.consoleMap[LogLevel.Error] = console.error;\n    this.consoleMap[LogLevel.Fatal] = console.error;\n  }\n\n  log(level: LogLevel, message: string, error?: Error): void {\n    const skip = this.config.enabled === false || level > this.config.logLevel;\n\n    if (skip) {\n      return;\n    }\n\n    const args: unknown[] = [message];\n    if (error) {\n      args.push(error);\n    }\n\n    this.consoleMap[level].apply(console, args);\n    if (this.config.persistLogs) {\n      this.logs.push({ timestamp: new Date(), level, message, error });\n    }\n  }\n\n  trace(message: string): void {\n    this.log(LogLevel.Trace, message);\n  }\n\n  debug(message: string): void {\n    this.log(LogLevel.Debug, message);\n  }\n\n  info(message: string): void {\n    this.log(LogLevel.Info, message);\n  }\n\n  warn(message: string, error?: Error): void {\n    this.log(LogLevel.Warn, message, error);\n  }\n\n  error(message: string, error?: Error): void {\n    this.log(LogLevel.Error, message, error);\n  }\n\n  fatal(message: string, error?: Error): void {\n    this.log(LogLevel.Fatal, message, error);\n  }\n}\n","// Angular.\nimport { Injectable, NgZone } from '@angular/core';\n\n// 3rd party.\nimport { BehaviorSubject, Subject, filter, firstValueFrom, map } from 'rxjs';\nimport {\n  User,\n  Session,\n  createClient,\n  SupabaseClient,\n  AuthChangeEvent,\n} from '@supabase/supabase-js';\n\n// Local.\nimport { SupabaseConfig } from './supabase-config';\nimport { LogService } from './logging/log.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SupabaseService {\n  client!: SupabaseClient;\n  readonly authChange = new Subject<AuthChangeEvent>();\n  readonly initialized = new BehaviorSubject<boolean>(false);\n  readonly session = new BehaviorSubject<Session | null>(null);\n  readonly user = new BehaviorSubject<User | null>(null);\n  readonly userDisplayName = new BehaviorSubject<string>('');\n  readonly userSubheading = new BehaviorSubject<string>('');\n  readonly userProfile = new BehaviorSubject<unknown>(null);\n  readonly userAvatar = new BehaviorSubject<string | null>(null);\n  readonly signedIn = new BehaviorSubject<boolean>(false);\n  readonly loading = new BehaviorSubject<boolean>(true);\n  readonly clientReady: Promise<SupabaseClient>;\n\n  get isSignedIn(): boolean {\n    return this.signedIn.value;\n  }\n\n  get isNotSignedIn(): boolean {\n    return !this.signedIn.value;\n  }\n\n  constructor(\n    private readonly zone: NgZone,\n    private readonly log: LogService,\n    private readonly config: SupabaseConfig\n  ) {\n    this.user.subscribe((user: User | null) => this.setUserInformation(user));\n\n    this.clientReady = firstValueFrom(\n      this.initialized.pipe(\n        filter(Boolean),\n        map(() => this.client)\n      )\n    );\n\n    this.config.api.subscribe(() => this.setup());\n  }\n\n  waitForSignedIn(): Promise<Session> {\n    return firstValueFrom(\n      this.signedIn.pipe(\n        filter(Boolean),\n        map(() => this.session.value as Session)\n      )\n    );\n  }\n\n  refreshUserDisplayInfo(): Promise<void> {\n    return this.setUserInformation(this.user.value);\n  }\n\n  private async setUserInformation(user: User | null): Promise<void> {\n    const profileTable = this.config.profile.table;\n    let displayName = '';\n\n    if (user && profileTable) {\n      this.log.debug(`Retrieving user profile for user ID '${user.id}'`);\n      const { error, data: profile } = await this.client\n        .from(profileTable)\n        .select()\n        .eq(this.config.profile.userIdField, user.id)\n        .limit(1)\n        .single();\n\n      if (error) {\n        this.log.error(\n          `Failed to retrieve user profile. ${error.details}`,\n          error as unknown as Error\n        );\n      }\n\n      if (profile) {\n        const firstName = profile[this.config.profile.firstNameField];\n        const lastName = profile[this.config.profile.lastNameField];\n        const avatar = profile[this.config.profile.avatarField];\n        displayName = `${firstName || ''} ${lastName || ''}`.trim();\n        this.userProfile.next(profile);\n\n        if (avatar) {\n          this.userAvatar.next(avatar);\n        }\n\n        this.log.debug(\n          `Retrieving display name of '${displayName}' from profile`\n        );\n      } else {\n        this.log.warn(`No profile found for user ID '${user.id}'`);\n      }\n    }\n\n    displayName = displayName || this.extractDisplay(user);\n    const subheading =\n      displayName === user?.email\n        ? ''\n        : user?.user_metadata?.['title'] || user?.email || '';\n\n    this.userDisplayName.next(displayName);\n    this.userSubheading.next(subheading);\n  }\n\n  private extractDisplay(user: User | null): string {\n    const { first_name, last_name } = user?.user_metadata || {};\n    const display = `${first_name || ''} ${last_name || ''}`.trim();\n    return user ? display || user.email || user.id : '';\n  }\n\n  private setup(): void {\n    if (this.isSignedIn) {\n      this.setStateForSignedOut();\n    }\n\n    this.createClient();\n  }\n\n  private createClient(): void {\n    const { url, key } = this.config.api.value;\n    this.client = createClient(url, key);\n    this.client.auth.onAuthStateChange((event) => {\n      this.zone.run(() => {\n        this.setAuthState(event);\n      });\n    });\n  }\n\n  private setAuthState(event: AuthChangeEvent): void {\n    this.log.info(`Auth state change: '${event}'`);\n    this.authChange.next(event);\n    if (event === 'INITIAL_SESSION') {\n      this.initialized.next(true);\n      this.loading.next(false);\n    } else if (event === 'SIGNED_IN') {\n      this.signedIn.next(true);\n      this.tryGetSession();\n    } else if (event === 'SIGNED_OUT') {\n      this.setStateForSignedOut();\n    }\n  }\n\n  private async tryGetSession(): Promise<void> {\n    const { data, error } = await this.client.auth.getSession();\n    const noSession = !error && !data.session;\n\n    if (noSession) {\n      this.log.error('No session information retrieved');\n      return;\n    }\n\n    if (error) {\n      this.log.error(`Failed to get user session`, error);\n      return;\n    }\n\n    this.session.next(data.session);\n\n    if (data.session?.user) {\n      this.user.next(data.session.user);\n    }\n  }\n\n  private setStateForSignedOut(): void {\n    this.session.next(null);\n    this.signedIn.next(false);\n    this.user.next(null);\n    this.userProfile.next(null);\n    this.userDisplayName.next('');\n    this.userSubheading.next('');\n  }\n}\n","// Angular.\nimport { Injectable } from '@angular/core';\n\n// Local.\nimport { KeyValue } from '../key-value';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PersistentStorageService {\n  getJson<T = KeyValue>(key: string): T | null {\n    const item = this.getItem(key);\n    return item ? (JSON.parse(item) as T) : null;\n  }\n\n  setJson(key: string, value: object): void {\n    const json = JSON.stringify(value);\n    this.setItem(key, json);\n  }\n\n  getItem(key: string): string | null {\n    return localStorage.getItem(key);\n  }\n\n  setItem(key: string, value: string): void {\n    localStorage.setItem(key, value);\n  }\n\n  clear(): void {\n    localStorage.clear();\n  }\n\n  removeItem(key: string): void {\n    localStorage.removeItem(key);\n  }\n}\n","// Angular.\nimport { UrlTree } from '@angular/router';\nimport {\n  Input,\n  signal,\n  OnInit,\n  inject,\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport {\n  FormGroup,\n  Validators,\n  FormControl,\n  ReactiveFormsModule,\n} from '@angular/forms';\n\n// 3rd party.\nimport { Subject } from 'rxjs';\n\n// Local.\nimport { WaitMessage } from '../wait-message';\nimport { RouteService } from '../route.service';\nimport { LogService } from '../logging/log.service';\nimport { SupabaseConfig } from '../supabase-config';\nimport { SupabaseService } from '../supabase.service';\nimport { PersistentStorageService } from '../storage/persistent-storage.service';\n\n@Component({\n  selector: 'supabase-sign-in',\n  standalone: true,\n  imports: [ReactiveFormsModule],\n  templateUrl: './sign-in.component.html',\n  styleUrl: './sign-in.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignInComponent implements OnInit {\n  @Input() title = '';\n  @Input() email = '';\n  @Input() password = '';\n  @Input() usePassword = false;\n  @Input() redirectTo = '';\n  @Input() rememberMe: boolean | undefined;\n\n  /**\n   * The absolute route to redirect to from the email link. This should not\n   * be used in conjunction with \"redirectToPath\" (use one or the other).\n   */\n  @Input() redirectToUrl = '';\n\n  /**\n   * A route path to redirect to from the email link (as apposed to an absolute path).\n   * This path will be appended to the app's root URL and will be the URL that is\n   * targeted from the email link. This should not be used in conjunction with\n   * \"redirectTo\" (use one or the other).\n   */\n  @Input() redirectToPath = '';\n\n  forgotPassword = false;\n  signingIn = new Subject<boolean>();\n  form = new FormGroup({\n    email: new FormControl('', [Validators.required]),\n    password: new FormControl(''),\n    usePassword: new FormControl(false),\n    rememberMe: new FormControl(true),\n  });\n\n  readonly errorMessage = signal<string | null>(null);\n  readonly wait = signal<WaitMessage | null>(null);\n  readonly verifyingOtp = signal(false);\n\n  protected readonly log = inject(LogService);\n  protected readonly config = inject(SupabaseConfig);\n  protected readonly supabase = inject(SupabaseService);\n  protected readonly routeService = inject(RouteService);\n  protected readonly storage = inject(PersistentStorageService);\n\n  ngOnInit(): void {\n    this.title = this.title ?? this.config.signIn.title;\n    const rememberMe = this.rememberMe ?? this.config.signIn.rememberMe;\n    this.form.controls.email.setValue(this.email);\n    this.form.controls.usePassword.setValue(this.usePassword);\n    this.form.controls.password.setValue(this.password);\n    this.form.controls.rememberMe.setValue(rememberMe);\n    this.tryLoadRememberMe();\n  }\n\n  showSignInWithPassword(event?: MouseEvent): void {\n    event?.preventDefault();\n    this.form.controls.usePassword.setValue(true);\n    this.form.controls.password.setValidators([Validators.required]);\n    this.revalidateAllControls();\n  }\n\n  showSignInWithEmail(event?: MouseEvent): void {\n    event?.preventDefault();\n    this.form.controls.usePassword.setValue(false);\n    this.form.controls.password.setValidators([]);\n    this.revalidateAllControls();\n  }\n\n  showForgotPassword(event?: MouseEvent): void {\n    event?.preventDefault();\n    this.forgotPassword = true;\n  }\n\n  signIn(): void {\n    if (this.form.disabled || this.form.invalid) {\n      return;\n    }\n\n    this.form.value.usePassword\n      ? this.signInWithPassword()\n      : this.signInWithMagicLink();\n  }\n\n  async verifyOtp(token: string): Promise<void> {\n    this.verifyingOtp.set(true);\n    const email = this.form.value.email as string;\n    const { error } = await this.supabase.client.auth.verifyOtp({\n      email,\n      token,\n      type: 'email',\n    });\n\n    if (error) {\n      this.errorMessage.set(error.message);\n      return;\n    }\n\n    const redirectUrl = this.getRedirectTo();\n    this.routeService.goTo(redirectUrl);\n  }\n\n  protected revalidateAllControls(): void {\n    Object.values(this.form.controls).forEach((control) =>\n      control.updateValueAndValidity()\n    );\n  }\n\n  protected async signInWithPassword(): Promise<void> {\n    try {\n      this.log.debug('Logging in with password');\n      this.signingIn.next(true);\n      const email = this.form.value.email as string;\n      const password = this.form.value.password as string;\n      const { error } = await this.supabase.client.auth.signInWithPassword({\n        email,\n        password,\n      });\n\n      if (error) {\n        this.log.debug(`Sign in failed. ${error.message}`);\n        this.errorMessage.set(error.message);\n        return;\n      }\n\n      const redirect = this.getRedirectUrl();\n      this.log.debug(`Signed in successfully. Redirecting to ${redirect}`);\n      this.trySaveRememberMe();\n\n      await this.supabase.waitForSignedIn();\n      this.routeService.goTo(redirect as string);\n    } catch (error) {\n      this.log.error(`Failed to sign in`);\n      // TODO: Handle - @rusty.green.\n    } finally {\n      this.signingIn.next(false);\n    }\n  }\n\n  protected getRedirectUrl(): string | string[] | UrlTree {\n    return (\n      this.redirectTo ||\n      this.routeService.getRedirectParamValue() ||\n      this.config.signIn.redirectTo ||\n      this.config.mainRoute\n    );\n  }\n\n  protected async signInWithMagicLink(): Promise<void> {\n    try {\n      this.signingIn.next(true);\n      const email = this.form.value.email as string;\n      const emailRedirectTo = this.getRedirectUrl().toString();\n      const { error } = await this.supabase.client.auth.signInWithOtp({\n        email,\n        options: {\n          emailRedirectTo,\n          // TODO: Pass/configure other options (like \"shouldCreateUser\") - @rusty.green\n        },\n      });\n\n      if (error) {\n        this.errorMessage.set(error.message);\n        return;\n      }\n\n      this.wait.set({\n        icon: 'pi pi-envelope',\n        title: 'Check your email',\n        enableOtp: this.config.signIn.otpEnabled,\n        message: `An email has been sent to <strong>${email}</strong> with a magic link to sign in. Simply click the link from your email and you will automatically be signed into this app.`,\n      });\n\n      this.trySaveRememberMe();\n    } catch (error) {\n      // TODO: Handle - @russell.green\n    } finally {\n      this.signingIn.next(false);\n    }\n  }\n\n  protected tryLoadRememberMe(): void {\n    const info = this.storage.getJson(this.config.signIn.rememberMeStorageKey);\n    if (info) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      this.form.patchValue(info);\n      this.form.value.usePassword\n        ? this.showSignInWithPassword()\n        : this.showSignInWithEmail();\n    }\n  }\n\n  protected clearRememberMe(): void {\n    this.storage.removeItem(this.config.signIn.rememberMeStorageKey);\n  }\n\n  protected trySaveRememberMe(): void {\n    if (this.form.value.rememberMe) {\n      const { email, usePassword } = this.form.value;\n      const value = { email, usePassword };\n      this.storage.setJson(this.config.signIn.rememberMeStorageKey, value);\n    } else {\n      this.clearRememberMe();\n    }\n  }\n\n  protected getRedirectTo(): string {\n    const fallback = this.config.routes.userProfile || this.config.routes.main;\n    return this.redirectToPath\n      ? this.routeService.appendRoute(this.redirectToPath)\n      : this.redirectToUrl || this.routeService.appendRoute(fallback);\n  }\n}\n","","export function uuid(): string {\n  return crypto.randomUUID();\n}\n","// Angular.\nimport { Injectable } from '@angular/core';\n\n// Local.\nimport { Message } from './message';\nimport { uuid } from '../crypto/uuid';\nimport { isString } from '../type-check/is-string';\n\nexport interface MessageRequest extends Partial<Message> {\n  message: string;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [x: string]: any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport abstract class NotifyService {\n  show(message: string, title?: string): Message;\n  show(target: MessageRequest): Message;\n  show(targetOrMessage: MessageRequest | string, title?: string): Message {\n    const asString = targetOrMessage as string;\n    const asMessage = targetOrMessage as MessageRequest;\n    const target = isString(targetOrMessage)\n      ? {\n          message: asString,\n          title: title,\n        }\n      : asMessage;\n\n    const message: Message = {\n      id: target.id || uuid(),\n      message: target.message || '',\n      position: target.position || 'bottom-right',\n      title: target.title || '',\n      severity: target.severity || 'info',\n    };\n\n    this.showNotify(message);\n    return message;\n  }\n\n  showInfo(target: MessageRequest): Message {\n    return this.show({ ...target, severity: 'info' });\n  }\n\n  showSuccess(target: MessageRequest): Message {\n    return this.show({ ...target, severity: 'success' });\n  }\n\n  showWarn(target: MessageRequest): Message {\n    return this.show({ ...target, severity: 'warn' });\n  }\n\n  showError(target: MessageRequest): Message {\n    return this.show({ ...target, severity: 'error' });\n  }\n\n  showFatal(target: MessageRequest): Message {\n    return this.show({ ...target, severity: 'fatal' });\n  }\n\n  protected abstract showNotify(message: Message): void;\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport {\n  Input,\n  OnInit,\n  inject,\n  signal,\n  Output,\n  Component,\n  OnDestroy,\n  EventEmitter,\n  ChangeDetectorRef,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport { UrlTree } from '@angular/router';\nimport {\n  FormGroup,\n  Validators,\n  FormControl,\n  AbstractControl,\n  ReactiveFormsModule,\n} from '@angular/forms';\n\n// 3rd party.\nimport { Subscription, debounceTime } from 'rxjs';\nimport { AuthError, User } from '@supabase/supabase-js';\n\n// Local.\nimport { RouteService } from '../route.service';\nimport { LogService } from '../logging/log.service';\nimport { SupabaseConfig } from '../supabase-config';\nimport { SupabaseService } from '../supabase.service';\nimport { NotifyService } from '../notify/notify.service';\n\n@Component({\n  selector: 'supabase-set-password',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule],\n  templateUrl: './set-password.component.html',\n  styleUrl: './set-password.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SetPasswordComponent implements OnInit, OnDestroy {\n  @Input() title = '';\n  @Input() saveLabel = 'Save Password';\n  @Input() savingLabel = 'Saving password...';\n  @Input() confirmPassword!: boolean;\n  @Input() redirectTo: string | string[] | UrlTree | null | undefined;\n  @Output() saved = new EventEmitter<User | null>();\n\n  readonly saving = signal(false);\n  readonly errorMessage = signal('');\n  readonly confirmMisMatch = signal(false);\n  readonly form: FormGroup = new FormGroup({\n    password: new FormControl('', [Validators.required]),\n  });\n\n  protected readonly log = inject(LogService);\n  protected readonly notify = inject(NotifyService);\n  protected readonly config = inject(SupabaseConfig);\n  protected readonly supabase = inject(SupabaseService);\n  protected readonly routeService = inject(RouteService);\n  protected readonly changeDetector = inject(ChangeDetectorRef);\n  protected readonly subscriptions: Subscription[] = [];\n\n  ngOnInit(): void {\n    this.title = this.title ?? this.config.setPassword.title;\n    this.confirmPassword =\n      this.confirmPassword ?? this.config.setPassword.requireConfirm;\n\n    if (this.confirmPassword) {\n      const confirm = new FormControl('', [\n        Validators.required,\n        validatePasswordsMatch,\n      ]);\n\n      this.form.addControl('confirm', confirm);\n      this.subscriptions.push(\n        this.form.valueChanges.pipe(debounceTime(250)).subscribe(() => {\n          const isMisMatch =\n            !this.form.disabled &&\n            confirm.dirty &&\n            confirm.value !== this.form.value.password;\n\n          this.confirmMisMatch.set(isMisMatch);\n        })\n      );\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s) => s.unsubscribe());\n  }\n\n  async submit(): Promise<void> {\n    if (this.form.invalid) {\n      return;\n    }\n\n    this.form.disable();\n    this.saving.set(true);\n\n    try {\n      const { data, error } = await this.supabase.client.auth.updateUser({\n        password: this.form.value.password,\n      });\n\n      if (error) {\n        this.errorMessage.set(error.message);\n        this.log.error(`Failed to save password. ${error.message}`);\n        this.onError(error);\n        return;\n      }\n\n      this.log.info(`Set password for '${data?.user?.email || ''}'`);\n      this.saved.emit(data.user);\n\n      if (this.config.setPassword.showMessageOnSave) {\n        this.notify.showSuccess({\n          title: 'Password Changed',\n          message: 'Your password was successfully reset',\n        });\n      }\n\n      if (this.redirectTo) {\n        await this.routeService.goTo(this.redirectTo as string);\n      }\n\n      this.form.reset();\n    } finally {\n      this.form.enable();\n      this.saving.set(false);\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onError(error: AuthError): void {\n    // Do nothing in here because this is just a hook for child\n    // components to easily subscribe to when an error occurs.\n  }\n}\n\nfunction validatePasswordsMatch(\n  c: AbstractControl\n): null | { passwordsMatch: false } {\n  const root = c.root as FormGroup;\n  return root.value['password'] === c.value ? null : { passwordsMatch: false };\n}\n","","// Angular.\nimport { CommonModule } from '@angular/common';\nimport {\n  Input,\n  signal,\n  Component,\n  ChangeDetectionStrategy,\n  OnInit,\n} from '@angular/core';\nimport {\n  FormGroup,\n  Validators,\n  FormControl,\n  ReactiveFormsModule,\n} from '@angular/forms';\n\n// Local.\nimport { WaitMessage } from '../wait-message';\nimport { AuthError } from '@supabase/supabase-js';\nimport { LogService } from '../logging/log.service';\nimport { SupabaseService } from '../supabase.service';\nimport { RouteService } from '../route.service';\nimport { SupabaseConfig } from '../supabase-config';\n\n@Component({\n  selector: 'supabase-reset-password',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule],\n  templateUrl: './reset-password.component.html',\n  styleUrl: './reset-password.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResetPasswordComponent implements OnInit {\n  @Input() title = 'Reset Password';\n  @Input() email = '';\n  /**\n   * The absolute route to redirect to from the email link. This should not\n   * be used in conjunction with \"redirectToPath\" (use one or the other).\n   */\n  @Input() redirectToUrl = '';\n\n  /**\n   * A route path to redirect to from the email link (as apposed to an absolute path).\n   * This path will be appended to the app's root URL and will be the URL that is\n   * targeted from the email link. This should not be used in conjunction with\n   * \"redirectTo\" (use one or the other).\n   */\n  @Input() redirectToPath = '';\n\n  readonly errorMessage = signal('');\n  readonly sendingReset = signal(false);\n  readonly wait = signal<WaitMessage | null>(null);\n  readonly form = new FormGroup({\n    email: new FormControl('', [Validators.required]),\n  });\n\n  constructor(\n    private readonly log: LogService,\n    private readonly config: SupabaseConfig,\n    private readonly supabase: SupabaseService,\n    private readonly routeService: RouteService\n  ) {}\n\n  ngOnInit(): void {\n    this.title = this.title ?? this.config.signIn.title;\n    this.form.controls.email.setValue(this.email);\n  }\n\n  async resetPassword(): Promise<void> {\n    if (this.form.invalid) {\n      return;\n    }\n\n    this.form.disable();\n    this.sendingReset.set(true);\n\n    try {\n      const email = this.form.value.email as string;\n      const redirectTo = this.getRedirectTo();\n\n      const { error } = await this.supabase.client.auth.resetPasswordForEmail(\n        email,\n        { redirectTo }\n      );\n\n      if (error) {\n        this.errorMessage.set(error.message);\n        this.log.error(`Failed to save password. ${error.message}`);\n        this.onError(error);\n      }\n\n      this.log.info(`Sent reset password email to '${email}'`);\n      this.wait.set({\n        icon: 'pi pi-envelope',\n        title: 'Check your email',\n        message: `An email has been sent to <strong>${email}</strong> with a link to reset your password. Simply click the link from your email and follow the instructions.`,\n      });\n    } finally {\n      this.form.enable();\n      this.sendingReset.set(false);\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onError(error: AuthError): void {\n    // Do nothing in here because this is just a hook for child\n    // components to easily subscribe to when an error occurs.\n  }\n\n  protected getRedirectTo(): string {\n    return this.redirectToPath\n      ? this.routeService.appendRoute(this.redirectToPath)\n      : this.redirectToUrl ||\n          this.routeService.appendRoute(this.config.routes.setPassword);\n  }\n}\n","","import { trimEnd } from './trim-end.function';\nimport { trimStart } from './trim-start.function';\n\nexport function trim(value: string, trimValue = ' ') {\n  const trimmedStart = trimStart(value, trimValue);\n  return trimEnd(trimmedStart, trimValue);\n}\n","// Angular.\nimport { inject } from '@angular/core';\nimport {\n  Router,\n  CanActivateFn,\n  RouterStateSnapshot,\n  ActivatedRouteSnapshot,\n} from '@angular/router';\n\n// Local.\nimport { KeyValue } from '../key-value';\nimport { RouteService } from '../route.service';\nimport { SupabaseConfig } from '../supabase-config';\nimport { LogService } from '../logging/log.service';\nimport { SupabaseService } from '../supabase.service';\n\nexport const IsSignedIn: CanActivateFn = async (\n  route: ActivatedRouteSnapshot,\n  state: RouterStateSnapshot\n) => {\n  const log = inject(LogService);\n  const supabase = inject(SupabaseService);\n  const router = inject(Router);\n  const config = inject(SupabaseConfig);\n  const routeService = inject(RouteService);\n\n  await supabase.clientReady;\n  const signedIn = supabase.isSignedIn;\n\n  if (!signedIn) {\n    const queryParams: KeyValue = {};\n\n    if (config.redirectParamName) {\n      const redirect = routeService.constructAbsoluteUrl(state.url);\n      queryParams[config.redirectParamName] = redirect;\n    }\n\n    log.info(\n      `User cannot access route '${state.url}', redirecting to sign in page`\n    );\n\n    return router.createUrlTree([config.routes.signIn], { queryParams });\n  }\n\n  log.debug(`Activating route '${state.url}' for 'IsSignedIn' guard`);\n  return supabase.isSignedIn;\n};\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n  Input,\n  signal,\n  OnInit,\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\n\n// 3rd party.\nimport { AuthError } from '@supabase/supabase-js';\n\n// Local.\nimport { WaitMessage } from '../wait-message';\nimport { RouteService } from '../route.service';\nimport { LogService } from '../logging/log.service';\nimport { SupabaseConfig } from '../supabase-config';\nimport { SupabaseService } from '../supabase.service';\n\n@Component({\n  selector: 'supabase-register',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './register.component.html',\n  styleUrl: './register.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterComponent implements OnInit {\n  @Input() title = '';\n  @Input() email = '';\n\n  /**\n   * The absolute route to redirect to from the email link. This should not\n   * be used in conjunction with \"redirectToPath\" (use one or the other).\n   */\n  @Input() redirectToUrl = '';\n\n  /**\n   * A route path to redirect to from the email link (as apposed to an absolute path).\n   * This path will be appended to the app's root URL and will be the URL that is\n   * targeted from the email link. This should not be used in conjunction with\n   * \"redirectTo\" (use one or the other).\n   */\n  @Input() redirectToPath = '';\n\n  readonly errorMessage = signal('');\n  readonly working = signal(false);\n  readonly verifyingOtp = signal(false);\n  readonly wait = signal<WaitMessage | null>(null);\n  readonly form: FormGroup = new FormGroup({\n    email: new FormControl('', [Validators.required]),\n  });\n\n  constructor(\n    readonly config: SupabaseConfig,\n    private readonly log: LogService,\n    private readonly supabase: SupabaseService,\n    private readonly routeService: RouteService\n  ) {}\n\n  ngOnInit(): void {\n    this.title = this.title ?? this.config.register.title;\n\n    if (this.config.register.metadata.length) {\n      this.setupForMetadata();\n    }\n  }\n\n  async register(): Promise<void> {\n    if (this.form.invalid) {\n      return;\n    }\n\n    try {\n      const email = this.form.value.email as string;\n      const data = this.form.value.metadata;\n      const emailRedirectTo = this.getRedirectTo();\n\n      this.form.disable();\n      this.working.set(true);\n\n      const { error } = await this.supabase.client.auth.signInWithOtp({\n        email,\n        options: {\n          shouldCreateUser: true,\n          emailRedirectTo,\n          data,\n        },\n      });\n\n      if (error) {\n        this.errorMessage.set(error.message);\n        this.log.error(`Failed to save password. ${error.message}`);\n        this.onError(error);\n      }\n\n      this.log.info(`Sent OTP email to '${email}'`);\n      this.wait.set({\n        icon: 'pi pi-envelope',\n        title: 'Check your email',\n        enableOtp: this.config.signIn.otpEnabled,\n        message: `An email has been sent to <strong>${email}</strong> with a link to verify your email address. Simply click the link from your email and follow the instructions to continue.`,\n      });\n    } finally {\n      this.form.enable();\n      this.working.set(false);\n    }\n  }\n\n  async verifyOtp(token: string): Promise<void> {\n    this.verifyingOtp.set(true);\n    const email = this.form.value.email as string;\n    const { error } = await this.supabase.client.auth.verifyOtp({\n      email,\n      token,\n      type: 'email',\n    });\n\n    if (error) {\n      this.onError(error);\n      return;\n    }\n\n    const redirectUrl = this.getRedirectTo();\n    this.routeService.goTo(redirectUrl);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onError(error: AuthError | string): void {\n    // Do nothing in here because this is just a hook for child\n    // components to easily subscribe to when an error occurs.\n  }\n\n  protected setupForMetadata(): void {\n    const group = new FormGroup({});\n\n    for (const meta of this.config.register.metadata) {\n      const validators = meta.required ? [Validators.required] : [];\n      const value = meta.defaultValue || '';\n      const control = new FormControl(value, validators);\n      group.addControl(meta.field, control);\n    }\n\n    this.form.addControl('metadata', group);\n  }\n\n  protected getRedirectTo(): string {\n    const fallback = this.config.routes.userProfile || this.config.routes.main;\n    return this.redirectToPath\n      ? this.routeService.appendRoute(this.redirectToPath)\n      : this.redirectToUrl || this.routeService.appendRoute(fallback);\n  }\n}\n","","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'supabase-user-avatar',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './user-avatar.component.html',\n  styleUrl: './user-avatar.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserAvatarComponent {}\n","","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'supabase-user-avatar-button',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './user-avatar-button.component.html',\n  styleUrl: './user-avatar-button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserAvatarButtonComponent {}\n","","// Angular.\nimport { Router } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport {\n  OnInit,\n  inject,\n  signal,\n  Component,\n  ChangeDetectionStrategy,\n} from '@angular/core';\n\n// Local.\nimport { SupabaseConfig } from '../supabase-config';\nimport { SupabaseService } from '../supabase.service';\n\n@Component({\n  selector: 'supabase-active-user-avatar-button',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './active-user-avatar-button.component.html',\n  styleUrl: './active-user-avatar-button.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActiveUserAvatarButtonComponent implements OnInit {\n  loading = signal<boolean>(true);\n\n  protected router = inject(Router);\n  protected config = inject(SupabaseConfig);\n  protected supabase = inject(SupabaseService);\n\n  async ngOnInit(): Promise<void> {\n    await this.supabase.clientReady;\n    this.loading.set(false);\n  }\n\n  signOut(): void {\n    this.supabase.client.auth.signOut();\n    if (this.config.routes.postSignOut) {\n      this.router.navigate([this.config.routes.postSignOut]);\n    }\n  }\n}\n","","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'supabase-register-or-sign-in',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './register-or-sign-in.component.html',\n  styleUrl: './register-or-sign-in.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterOrSignInComponent {}\n","","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'initials',\n  standalone: true,\n})\nexport class InitialsPipe implements PipeTransform {\n  transform(fullName: string | null | undefined, numChars = 2): string {\n    if (!fullName) {\n      return '';\n    }\n\n    return fullName\n      .split(' ')\n      .slice(0, numChars)\n      .map((n) => n[0].toUpperCase())\n      .join('');\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.SupabaseConfig","i1.SupabaseConfig","i1.LogService","i3.SupabaseService","i4.RouteService","i2.LogService"],"mappings":"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"}