{"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts"],"sourcesContent":["export interface SqlDriverError<Kind extends string> {\n  readonly kind: Kind;\n}\n/**\n * SQL query error for query-related failures (syntax errors, constraint violations, permissions).\n */\nexport class SqlQueryError extends Error implements SqlDriverError<'sql_query'> {\n  static readonly ERROR_NAME = 'SqlQueryError' as const;\n  readonly kind = 'sql_query' as const;\n  readonly sqlState: string | undefined;\n  readonly constraint: string | undefined;\n  readonly table: string | undefined;\n  readonly column: string | undefined;\n  readonly detail: string | undefined;\n\n  constructor(\n    message: string,\n    options?: {\n      readonly cause?: Error;\n      readonly sqlState?: string;\n      readonly constraint?: string;\n      readonly table?: string;\n      readonly column?: string;\n      readonly detail?: string;\n    },\n  ) {\n    super(message, { cause: options?.cause });\n    this.name = SqlQueryError.ERROR_NAME;\n    this.sqlState = options?.sqlState;\n    this.constraint = options?.constraint;\n    this.table = options?.table;\n    this.column = options?.column;\n    this.detail = options?.detail;\n  }\n\n  /**\n   * Type predicate to check if an error is a SqlQueryError.\n   */\n  static is(error: unknown): error is SqlQueryError {\n    return (\n      typeof error === 'object' &&\n      error !== null &&\n      Object.hasOwn(error, 'kind') &&\n      (error as { kind: unknown }).kind === 'sql_query'\n    );\n  }\n}\n\n/**\n * SQLSTATE for a unique-constraint / primary-key violation — the SQL-standard\n * `unique_violation` class. Drivers normalize their target-specific codes (e.g.\n * Postgres `23505`, SQLite `SQLITE_CONSTRAINT_UNIQUE`/`PRIMARYKEY`) onto this\n * value on {@link SqlQueryError.sqlState}, so consumers classify violations\n * without knowing any target-specific error shape.\n */\nexport const UNIQUE_VIOLATION_SQLSTATE = '23505';\n\n/**\n * Whether an error is a unique-constraint (or primary-key) violation, decided\n * solely from the driver-normalized {@link SqlQueryError.sqlState}. Raw driver\n * errors that were never normalized are not classified — callers run behind the\n * driver, which always normalizes before the error escapes.\n */\nexport function isUniqueConstraintViolation(error: unknown): boolean {\n  return SqlQueryError.is(error) && error.sqlState === UNIQUE_VIOLATION_SQLSTATE;\n}\n\n/**\n * SQL connection error (timeouts, connection resets, etc.).\n */\nexport class SqlConnectionError extends Error implements SqlDriverError<'sql_connection'> {\n  static readonly ERROR_NAME = 'SqlConnectionError' as const;\n  readonly kind = 'sql_connection' as const;\n  readonly transient: boolean | undefined;\n\n  constructor(\n    message: string,\n    options?: {\n      readonly cause?: Error;\n      readonly transient?: boolean;\n    },\n  ) {\n    super(message, { cause: options?.cause });\n    this.name = SqlConnectionError.ERROR_NAME;\n    this.transient = options?.transient;\n  }\n\n  /**\n   * Type predicate to check if an error is a SqlConnectionError.\n   */\n  static is(error: unknown): error is SqlConnectionError {\n    return (\n      typeof error === 'object' &&\n      error !== null &&\n      Object.hasOwn(error, 'kind') &&\n      (error as { kind: unknown }).kind === 'sql_connection'\n    );\n  }\n}\n"],"mappings":";;;;AAMA,IAAa,gBAAb,MAAa,sBAAsB,MAA6C;CAC9E,OAAgB,aAAa;CAC7B,OAAgB;CAChB;CACA;CACA;CACA;CACA;CAEA,YACE,SACA,SAQA;EACA,MAAM,SAAS,EAAE,OAAO,SAAS,MAAM,CAAC;EACxC,KAAK,OAAO,cAAc;EAC1B,KAAK,WAAW,SAAS;EACzB,KAAK,aAAa,SAAS;EAC3B,KAAK,QAAQ,SAAS;EACtB,KAAK,SAAS,SAAS;EACvB,KAAK,SAAS,SAAS;CACzB;;;;CAKA,OAAO,GAAG,OAAwC;EAChD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,OAAO,OAAO,MAAM,KAC1B,MAA4B,SAAS;CAE1C;AACF;;;;;;;;AASA,MAAa,4BAA4B;;;;;;;AAQzC,SAAgB,4BAA4B,OAAyB;CACnE,OAAO,cAAc,GAAG,KAAK,KAAK,MAAM,aAAA;AAC1C;;;;AAKA,IAAa,qBAAb,MAAa,2BAA2B,MAAkD;CACxF,OAAgB,aAAa;CAC7B,OAAgB;CAChB;CAEA,YACE,SACA,SAIA;EACA,MAAM,SAAS,EAAE,OAAO,SAAS,MAAM,CAAC;EACxC,KAAK,OAAO,mBAAmB;EAC/B,KAAK,YAAY,SAAS;CAC5B;;;;CAKA,OAAO,GAAG,OAA6C;EACrD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,OAAO,OAAO,MAAM,KAC1B,MAA4B,SAAS;CAE1C;AACF"}