All files / packages/effect-utils/src type.ts

100% Statements 10/10
100% Branches 2/2
100% Functions 7/7
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45                1x                         15x 2x     2x     2x     2x   2x     3x           2x    
import {
  AppError,
  AuthError,
  DatabaseError,
  NetworkError,
  NotFoundError,
  TimeoutError,
  ValidationError,
} from "./base";
 
// Union type of all error types
export type DomainError =
  | AppError
  | NetworkError
  | ValidationError
  | DatabaseError
  | AuthError
  | NotFoundError
  | TimeoutError;
 
// Helper to create errors
export const createError = {
  app: (message: string, cause?: unknown) => new AppError({ message, cause }),
 
  network: (message: string, statusCode?: number, url?: string) =>
    new NetworkError({ message, statusCode, url }),
 
  validation: (message: string, field?: string, errors?: Record<string, string>) =>
    new ValidationError({ message, field, errors }),
 
  database: (message: string, query?: string, code?: string) =>
    new DatabaseError({ message, query, code }),
 
  auth: (message: string, code?: string) => new AuthError({ message, code }),
 
  notFound: (resource: string, id?: string) =>
    new NotFoundError({
      message: `${resource} not found${id ? `: ${id}` : ""}`,
      resource,
      id,
    }),
 
  timeout: (message: string, duration?: number) => new TimeoutError({ message, duration }),
};