{"version":3,"file":"index.cjs","sources":["../src/types/result.ts","../src/services/auth.service.ts","../src/services/user.service.ts","../src/services/crud.service.ts","../src/core/service-manager.ts","../src/index.ts"],"sourcesContent":["/**\n * @fileoverview Result pattern types for error handling without exceptions\n * @category Types\n */\n\n/**\n * Success result containing data\n */\nexport interface Success<T> {\n  success: true;\n  data: T;\n}\n\n/**\n * Failure result containing error\n */\nexport interface Failure<E = Error> {\n  success: false;\n  error: E;\n}\n\n/**\n * Result type that can be either success or failure\n * @template T - Type of success data\n * @template E - Type of error (defaults to Error)\n */\nexport type Result<T, E = Error> = Success<T> | Failure<E>;\n\n/**\n * Creates a success result\n * @param data - The success data\n * @returns Success result\n */\nexport function createSuccess<T>(data: T): Success<T> {\n  return {\n    success: true,\n    data,\n  };\n}\n\n/**\n * Creates a failure result\n * @param error - The error\n * @returns Failure result\n */\nexport function createFailure<E = Error>(error: E): Failure<E> {\n  return {\n    success: false,\n    error,\n  };\n}\n\n/**\n * Type guard to check if result is successful\n * @param result - Result to check\n * @returns True if result is successful\n */\nexport function isSuccess<T, E>(result: Result<T, E>): result is Success<T> {\n  return result.success === true;\n}\n\n/**\n * Type guard to check if result is a failure\n * @param result - Result to check\n * @returns True if result is a failure\n */\nexport function isFailure<T, E>(result: Result<T, E>): result is Failure<E> {\n  return result.success === false;\n}\n","/**\n * @fileoverview Authentication service for user authentication operations\n * @category Authentication\n */\n\nimport {createClient, type SupabaseClient} from \"@supabase/supabase-js\";\nimport type {SupabaseConfig, AuthSession, SignUpResult, SignInResult} from \"../types/auth\";\nimport type {User, UserProfileUpdate} from \"../types/user\";\nimport type {Result} from \"../types/result\";\nimport {createSuccess, createFailure} from \"../types/result\";\n\n/**\n * Authentication service handling user authentication operations\n */\nexport class AuthService {\n  private supabase: SupabaseClient;\n\n  /**\n   * Initialize the authentication service\n   * @param config - Supabase configuration\n   */\n  constructor(config: SupabaseConfig) {\n    this.supabase = createClient(config.url, config.anonKey);\n  }\n\n  /**\n   * Sign up a new user with email and password\n   * @param email - User's email address\n   * @param password - User's password\n   * @param profile - Optional profile data to set during signup\n   * @returns Promise resolving to Result with user and verification status\n   */\n  async signUp(email: string, password: string, profile?: UserProfileUpdate): Promise<Result<SignUpResult>> {\n    try {\n      const {data, error} = await this.supabase.auth.signUp({\n        email,\n        password,\n        options: {\n          data: profile || {},\n        },\n      });\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!data.user) {\n        return createFailure(new Error(\"User creation failed\"));\n      }\n\n      const user = this.mapSupabaseUserToUser(data.user);\n      const needsVerification = !data.user.email_confirmed_at;\n\n      return createSuccess({\n        user,\n        needsVerification,\n      });\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Sign up failed\"));\n    }\n  }\n\n  /**\n   * Sign in an existing user with email and password\n   * @param email - User's email address\n   * @param password - User's password\n   * @returns Promise resolving to Result with user and session\n   */\n  async signIn(email: string, password: string): Promise<Result<SignInResult>> {\n    try {\n      const {data, error} = await this.supabase.auth.signInWithPassword({\n        email,\n        password,\n      });\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!data.user || !data.session) {\n        return createFailure(new Error(\"Sign in failed\"));\n      }\n\n      const user = this.mapSupabaseUserToUser(data.user);\n      const session = this.mapSupabaseSessionToAuthSession(data.session, user);\n\n      return createSuccess({\n        user,\n        session,\n      });\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Sign in failed\"));\n    }\n  }\n\n  /**\n   * Sign out the current user\n   * @returns Promise resolving to Result indicating success or failure\n   */\n  async signOut(): Promise<Result<void>> {\n    try {\n      const {error} = await this.supabase.auth.signOut();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(undefined);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Sign out failed\"));\n    }\n  }\n\n  /**\n   * Get the current authenticated user\n   * @returns Promise resolving to Result with current user or null\n   */\n  async getCurrentUser(): Promise<Result<User | null>> {\n    try {\n      const {\n        data: {user},\n        error,\n      } = await this.supabase.auth.getUser();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!user) {\n        return createSuccess(null);\n      }\n\n      const mappedUser = this.mapSupabaseUserToUser(user);\n      return createSuccess(mappedUser);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Failed to get current user\"));\n    }\n  }\n\n  /**\n   * Get the current authentication session\n   * @returns Promise resolving to Result with current session or null\n   */\n  async getCurrentSession(): Promise<Result<AuthSession | null>> {\n    try {\n      const {\n        data: {session},\n        error,\n      } = await this.supabase.auth.getSession();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!session) {\n        return createSuccess(null);\n      }\n\n      const user = this.mapSupabaseUserToUser(session.user);\n      const authSession = this.mapSupabaseSessionToAuthSession(session, user);\n\n      return createSuccess(authSession);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Failed to get current session\"));\n    }\n  }\n\n  /**\n   * Resend email verification for the current user\n   * @returns Promise resolving to Result indicating success or failure\n   */\n  async resendVerificationEmail(): Promise<Result<void>> {\n    try {\n      const {\n        data: {user},\n      } = await this.supabase.auth.getUser();\n\n      if (!user) {\n        return createFailure(new Error(\"No authenticated user found\"));\n      }\n\n      const {error} = await this.supabase.auth.resend({\n        type: \"signup\",\n        email: user.email!,\n      });\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(undefined);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Failed to resend verification email\"));\n    }\n  }\n\n  // TODO: extract as utility function\n  /**\n   * Map Supabase user object to our User interface\n   * @param supabaseUser - Supabase user object\n   * @returns Mapped User object\n   */\n  private mapSupabaseUserToUser(supabaseUser: any): User {\n    return {\n      id: supabaseUser.id,\n      email: supabaseUser.email,\n      firstName: supabaseUser.user_metadata?.firstName || supabaseUser.user_metadata?.first_name,\n      lastName: supabaseUser.user_metadata?.lastName || supabaseUser.user_metadata?.last_name,\n      avatar: supabaseUser.user_metadata?.avatar || supabaseUser.user_metadata?.avatar_url,\n      emailVerified: !!supabaseUser.email_confirmed_at,\n      createdAt: supabaseUser.created_at,\n      updatedAt: supabaseUser.updated_at,\n    };\n  }\n\n  /**\n   * Map Supabase session to our AuthSession interface\n   * @param supabaseSession - Supabase session object\n   * @param user - Mapped user object\n   * @returns Mapped AuthSession object\n   */\n  private mapSupabaseSessionToAuthSession(supabaseSession: any, user: User): AuthSession {\n    return {\n      user,\n      accessToken: supabaseSession.access_token,\n      refreshToken: supabaseSession.refresh_token,\n      expiresAt: supabaseSession.expires_at,\n    };\n  }\n}\n","/**\n * @fileoverview User profile management service\n * @category Profile Management\n */\n\nimport type {SupabaseClient} from \"@supabase/supabase-js\";\nimport type {User, UserProfileUpdate} from \"../types/user\";\nimport type {Result} from \"../types/result\";\nimport {createSuccess, createFailure} from \"../types/result\";\n\n/**\n * User service handling profile management operations\n */\nexport class UserService {\n  private supabase: SupabaseClient;\n\n  /**\n   * Initialize the user service\n   * @param supabaseClient - Configured Supabase client\n   */\n  constructor(supabaseClient: SupabaseClient) {\n    this.supabase = supabaseClient;\n  }\n\n  /**\n   * Update the current user's profile information\n   * @param updates - Profile fields to update\n   * @returns Promise resolving to Result with updated user\n   */\n  async updateProfile(updates: UserProfileUpdate): Promise<Result<User>> {\n    try {\n      // Get current user first\n      const {\n        data: {user},\n        error: getUserError,\n      } = await this.supabase.auth.getUser();\n\n      if (getUserError) {\n        return createFailure(new Error(getUserError.message));\n      }\n\n      if (!user) {\n        return createFailure(new Error(\"No authenticated user found\"));\n      }\n\n      // Update user metadata\n      const {data, error} = await this.supabase.auth.updateUser({\n        data: {\n          ...user.user_metadata,\n          ...updates,\n        },\n      });\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!data.user) {\n        return createFailure(new Error(\"Profile update failed\"));\n      }\n\n      const updatedUser = this.mapSupabaseUserToUser(data.user);\n      return createSuccess(updatedUser);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Profile update failed\"));\n    }\n  }\n\n  /**\n   * Get the current authenticated user with fresh data\n   * @returns Promise resolving to Result with current user or null\n   */\n  async getCurrentUser(): Promise<Result<User | null>> {\n    try {\n      const {\n        data: {user},\n        error,\n      } = await this.supabase.auth.getUser();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      if (!user) {\n        return createSuccess(null);\n      }\n\n      const mappedUser = this.mapSupabaseUserToUser(user);\n      return createSuccess(mappedUser);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Failed to get current user\"));\n    }\n  }\n\n  // TODO: extract as utility function\n  /**\n   * Map Supabase user object to our User interface\n   * @param supabaseUser - Supabase user object\n   * @returns Mapped User object\n   */\n  private mapSupabaseUserToUser(supabaseUser: any): User {\n    return {\n      id: supabaseUser.id,\n      email: supabaseUser.email,\n      firstName: supabaseUser.user_metadata?.firstName || supabaseUser.user_metadata?.first_name,\n      lastName: supabaseUser.user_metadata?.lastName || supabaseUser.user_metadata?.last_name,\n      avatar: supabaseUser.user_metadata?.avatar || supabaseUser.user_metadata?.avatar_url,\n      emailVerified: !!supabaseUser.email_confirmed_at,\n      createdAt: supabaseUser.created_at,\n      updatedAt: supabaseUser.updated_at,\n    };\n  }\n}\n","/**\n * @fileoverview Basic CRUD operations service\n * @category CRUD Operations\n */\n\nimport {SupabaseClient} from \"@supabase/supabase-js\";\nimport type {Result} from \"../types/result\";\nimport {createSuccess, createFailure} from \"../types/result\";\n\n/**\n * CRUD service handling basic database operations\n */\nexport class CrudService {\n  private supabase: SupabaseClient;\n\n  /**\n   * Initialize the CRUD service\n   * @param supabaseClient - Configured Supabase client\n   */\n  constructor(supabaseClient: SupabaseClient) {\n    this.supabase = supabaseClient;\n  }\n\n  /**\n   * Create a new record in the specified table\n   * @param table - Table name\n   * @param data - Data to insert\n   * @returns Promise resolving to Result with created record\n   */\n  async create(table: string, data: Record<string, any>): Promise<Result<any>> {\n    try {\n      const {data: result, error} = await this.supabase.from(table).insert(data).select().single();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(result);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Create operation failed\"));\n    }\n  }\n\n  /**\n   * Read a record by ID from the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @returns Promise resolving to Result with record or null\n   */\n  async read(table: string, id: string): Promise<Result<any | null>> {\n    try {\n      const {data, error} = await this.supabase.from(table).select(\"*\").eq(\"id\", id).single();\n\n      if (error) {\n        // Handle \"not found\" as success with null\n        if (error.code === \"PGRST116\") {\n          return createSuccess(null);\n        }\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(data);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Read operation failed\"));\n    }\n  }\n\n  /**\n   * Update a record by ID in the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @param data - Data to update\n   * @returns Promise resolving to Result with updated record\n   */\n  async update(table: string, id: string, data: Record<string, any>): Promise<Result<any>> {\n    try {\n      const {data: result, error} = await this.supabase.from(table).update(data).eq(\"id\", id).select().single();\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(result);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Update operation failed\"));\n    }\n  }\n\n  /**\n   * Delete a record by ID from the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @returns Promise resolving to Result indicating success or failure\n   */\n  async delete(table: string, id: string): Promise<Result<void>> {\n    try {\n      const {error} = await this.supabase.from(table).delete().eq(\"id\", id);\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(undefined);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"Delete operation failed\"));\n    }\n  }\n\n  /**\n   * List records from the specified table with optional basic filtering\n   * @param table - Table name\n   * @param filters - Optional filters to apply\n   * @returns Promise resolving to Result with array of records\n   */\n  async list(table: string, filters?: Record<string, any>): Promise<Result<any[]>> {\n    try {\n      let query = this.supabase.from(table).select(\"*\");\n\n      // Apply basic filters if provided\n      if (filters) {\n        Object.entries(filters).forEach(([key, value]) => {\n          query = query.eq(key, value);\n        });\n      }\n\n      const {data, error} = await query;\n\n      if (error) {\n        return createFailure(new Error(error.message));\n      }\n\n      return createSuccess(data || []);\n    } catch (error) {\n      return createFailure(error instanceof Error ? error : new Error(\"List operation failed\"));\n    }\n  }\n}\n","/**\n * @fileoverview Main ServiceManager class integrating all services\n * @category Main\n */\n\nimport {createClient, type SupabaseClient} from \"@supabase/supabase-js\";\nimport {AuthService} from \"../services/auth.service\";\nimport {UserService} from \"../services/user.service\";\nimport {CrudService} from \"../services/crud.service\";\nimport type {ServiceManagerConfig, AuthSession, SignUpResult, SignInResult} from \"../types/auth\";\nimport type {User, UserProfileUpdate} from \"../types/user\";\nimport type {Result} from \"../types/result\";\n\n/**\n * Main ServiceManager class providing user authentication, profile management, and basic CRUD operations\n *\n * @example\n * ```typescript\n * const serviceManager = new ServiceManager({\n *   supabase: {\n *     url: \"your-supabase-url\",\n *     anonKey: \"your-anon-key\",\n *   },\n * });\n *\n * // Sign up a new user\n * const signUpResult = await serviceManager.signUp(\"user@example.com\", \"password123\");\n * if (signUpResult.success) {\n *   console.log(\"User created:\", signUpResult.data.user);\n * }\n *\n * // Create a database record\n * const createResult = await serviceManager.create(\"social_links\", {\n *   user_id: signUpResult.data.user.id,\n *   platform: \"twitter\",\n *   url: \"https://twitter.com/username\"\n * });\n * ```\n */\nexport class ServiceManager {\n  private supabase: SupabaseClient;\n  private authService: AuthService;\n  private userService: UserService;\n  private crudService: CrudService;\n\n  /**\n   * Initialize the ServiceManager with Supabase configuration\n   * @param config - ServiceManager configuration containing Supabase settings\n   */\n  constructor(config: ServiceManagerConfig) {\n    this.supabase = createClient(config.supabase.url, config.supabase.anonKey);\n    this.authService = new AuthService(config.supabase);\n    this.userService = new UserService(this.supabase);\n    this.crudService = new CrudService(this.supabase);\n  }\n\n  // Authentication Methods\n\n  /**\n   * Sign up a new user with email and password\n   * @param email - User's email address\n   * @param password - User's password\n   * @param profile - Optional profile data to set during signup\n   * @returns Promise resolving to Result with user and verification status\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.signUp(\"user@example.com\", \"password123\", {\n   *   firstName: \"John\",\n   *   lastName: \"Doe\"\n   * });\n   *\n   * if (result.success) {\n   *   if (result.data.needsVerification) {\n   *     console.log(\"Please check your email for verification\");\n   *   }\n   *   console.log(\"User created:\", result.data.user);\n   * } else {\n   *   console.error(\"Sign up failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async signUp(email: string, password: string, profile?: UserProfileUpdate): Promise<Result<SignUpResult>> {\n    return this.authService.signUp(email, password, profile);\n  }\n\n  /**\n   * Sign in an existing user with email and password\n   * @param email - User's email address\n   * @param password - User's password\n   * @returns Promise resolving to Result with user and session\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.signIn(\"user@example.com\", \"password123\");\n   *\n   * if (result.success) {\n   *   console.log(\"Signed in:\", result.data.user);\n   *   console.log(\"Session expires at:\", new Date(result.data.session.expiresAt));\n   * } else {\n   *   console.error(\"Sign in failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async signIn(email: string, password: string): Promise<Result<SignInResult>> {\n    return this.authService.signIn(email, password);\n  }\n\n  /**\n   * Sign out the current user\n   * @returns Promise resolving to Result indicating success or failure\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.signOut();\n   *\n   * if (result.success) {\n   *   console.log(\"Successfully signed out\");\n   * } else {\n   *   console.error(\"Sign out failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async signOut(): Promise<Result<void>> {\n    return this.authService.signOut();\n  }\n\n  /**\n   * Resend email verification for the current user\n   * @returns Promise resolving to Result indicating success or failure\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.resendVerificationEmail();\n   *\n   * if (result.success) {\n   *   console.log(\"Verification email sent\");\n   * } else {\n   *   console.error(\"Failed to send verification email:\", result.error.message);\n   * }\n   * ```\n   */\n  async resendVerificationEmail(): Promise<Result<void>> {\n    return this.authService.resendVerificationEmail();\n  }\n\n  // Profile Management Methods\n\n  /**\n   * Update the current user's profile information\n   * @param updates - Profile fields to update (firstName, lastName, avatar)\n   * @returns Promise resolving to Result with updated user\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.updateProfile({\n   *   firstName: \"John\",\n   *   lastName: \"Doe\",\n   *   avatar: \"https://example.com/avatar.jpg\"\n   * });\n   *\n   * if (result.success) {\n   *   console.log(\"Profile updated:\", result.data);\n   * } else {\n   *   console.error(\"Profile update failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async updateProfile(updates: UserProfileUpdate): Promise<Result<User>> {\n    return this.userService.updateProfile(updates);\n  }\n\n  /**\n   * Get the current authenticated user\n   * @returns Promise resolving to Result with current user or null\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.getCurrentUser();\n   *\n   * if (result.success) {\n   *   if (result.data) {\n   *     console.log(\"Current user:\", result.data);\n   *   } else {\n   *     console.log(\"No user is currently signed in\");\n   *   }\n   * } else {\n   *   console.error(\"Failed to get current user:\", result.error.message);\n   * }\n   * ```\n   */\n  async getCurrentUser(): Promise<Result<User | null>> {\n    return this.userService.getCurrentUser();\n  }\n\n  /**\n   * Get the current authentication session\n   * @returns Promise resolving to Result with current session or null\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.getCurrentSession();\n   *\n   * if (result.success) {\n   *   if (result.data) {\n   *     console.log(\"Current session:\", result.data);\n   *     console.log(\"Expires at:\", new Date(result.data.expiresAt));\n   *   } else {\n   *     console.log(\"No active session\");\n   *   }\n   * } else {\n   *   console.error(\"Failed to get current session:\", result.error.message);\n   * }\n   * ```\n   */\n  async getCurrentSession(): Promise<Result<AuthSession | null>> {\n    return this.authService.getCurrentSession();\n  }\n\n  // Basic CRUD Operations\n\n  /**\n   * Create a new record in the specified table\n   * @param table - Table name\n   * @param data - Data to insert\n   * @returns Promise resolving to Result with created record\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.create(\"social_links\", {\n   *   user_id: \"user-id\",\n   *   platform: \"twitter\",\n   *   url: \"https://twitter.com/username\"\n   * });\n   *\n   * if (result.success) {\n   *   console.log(\"Record created:\", result.data);\n   * } else {\n   *   console.error(\"Create failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async create(table: string, data: Record<string, any>): Promise<Result<any>> {\n    return this.crudService.create(table, data);\n  }\n\n  /**\n   * Read a record by ID from the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @returns Promise resolving to Result with record or null\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.read(\"social_links\", \"link-id\");\n   *\n   * if (result.success) {\n   *   if (result.data) {\n   *     console.log(\"Record found:\", result.data);\n   *   } else {\n   *     console.log(\"Record not found\");\n   *   }\n   * } else {\n   *   console.error(\"Read failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async read(table: string, id: string): Promise<Result<any | null>> {\n    return this.crudService.read(table, id);\n  }\n\n  /**\n   * Update a record by ID in the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @param data - Data to update\n   * @returns Promise resolving to Result with updated record\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.update(\"social_links\", \"link-id\", {\n   *   url: \"https://twitter.com/newusername\"\n   * });\n   *\n   * if (result.success) {\n   *   console.log(\"Record updated:\", result.data);\n   * } else {\n   *   console.error(\"Update failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async update(table: string, id: string, data: Record<string, any>): Promise<Result<any>> {\n    return this.crudService.update(table, id, data);\n  }\n\n  /**\n   * Delete a record by ID from the specified table\n   * @param table - Table name\n   * @param id - Record ID\n   * @returns Promise resolving to Result indicating success or failure\n   *\n   * @example\n   * ```typescript\n   * const result = await serviceManager.delete(\"social_links\", \"link-id\");\n   *\n   * if (result.success) {\n   *   console.log(\"Record deleted successfully\");\n   * } else {\n   *   console.error(\"Delete failed:\", result.error.message);\n   * }\n   * ```\n   */\n  async delete(table: string, id: string): Promise<Result<void>> {\n    return this.crudService.delete(table, id);\n  }\n\n  /**\n   * List records from the specified table with optional basic filtering\n   * @param table - Table name\n   * @param filters - Optional filters to apply (key-value pairs for exact matches)\n   * @returns Promise resolving to Result with array of records\n   *\n   * @example\n   * ```typescript\n   * // List all records\n   * const allResult = await serviceManager.list(\"social_links\");\n   *\n   * // List with filters\n   * const filteredResult = await serviceManager.list(\"social_links\", {\n   *   user_id: \"user-id\",\n   *   platform: \"twitter\"\n   * });\n   *\n   * if (filteredResult.success) {\n   *   console.log(\"Records found:\", filteredResult.data);\n   * } else {\n   *   console.error(\"List failed:\", filteredResult.error.message);\n   * }\n   * ```\n   */\n  async list(table: string, filters?: Record<string, any>): Promise<Result<any[]>> {\n    return this.crudService.list(table, filters);\n  }\n}\n","// Supabase Service Manager Library\n// Main entry point\n\n// Main class export\nexport {ServiceManager} from \"./core/service-manager\";\n\n// Type exports\nexport * from \"./types/result\";\nexport * from \"./types/user\";\nexport * from \"./types/auth\";\n\n// TODO: Uncomment these exports as modules are implemented\n// export * from './core/user-manager';\n\n// Service exports for advanced usage\nexport {AuthService} from \"./services/auth.service\";\nexport {UserService} from \"./services/user.service\";\nexport {CrudService} from \"./services/crud.service\";\n\n// Library metadata\nexport const version = \"1.0.0\";\n"],"names":["createSuccess","data","success","createFailure","error","AuthService","constructor","config","this","supabase","createClient","url","anonKey","signUp","email","password","profile","auth","options","Error","message","user","mapSupabaseUserToUser","needsVerification","email_confirmed_at","signIn","signInWithPassword","session","mapSupabaseSessionToAuthSession","signOut","getCurrentUser","getUser","getCurrentSession","getSession","resendVerificationEmail","resend","type","supabaseUser","id","firstName","_a","user_metadata","_b","first_name","lastName","_c","_d","last_name","avatar","_e","_f","avatar_url","emailVerified","createdAt","created_at","updatedAt","updated_at","supabaseSession","accessToken","access_token","refreshToken","refresh_token","expiresAt","expires_at","UserService","supabaseClient","updateProfile","updates","getUserError","updateUser","CrudService","create","table","result","from","insert","select","single","read","eq","code","update","delete","list","filters","query","Object","entries","forEach","key","value","authService","userService","crudService"],"mappings":"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"}