react-native-nitro-sqlite
Version:
Fast SQLite library for React Native built using Nitro Modules
46 lines (38 loc) • 1.24 kB
text/typescript
const NITRO_SQLITE_ERROR_NAME = 'NitroSQLiteError' as const
/**
* Custom error class for NitroSQLite operations
* Extends the native Error class with proper prototype chain and error handling
*/
export default class NitroSQLiteError extends Error {
constructor(message: string, options?: ErrorOptions) {
super(message, options)
this.name = NITRO_SQLITE_ERROR_NAME
// Maintains proper prototype chain for instanceof checks
Object.setPrototypeOf(this, NitroSQLiteError.prototype)
}
/**
* Converts an unknown error to a NitroSQLiteError
* Preserves stack traces and error causes when available
*/
static fromError(error: unknown): NitroSQLiteError {
if (error instanceof NitroSQLiteError) {
return error
}
if (error instanceof Error) {
const nitroSQLiteError = new NitroSQLiteError(error.message, {
cause: error.cause,
})
// Preserve original stack trace if available
if (error.stack) {
nitroSQLiteError.stack = error.stack
}
return nitroSQLiteError
}
if (typeof error === 'string') {
return new NitroSQLiteError(error)
}
return new NitroSQLiteError('Unknown error occurred', {
cause: error,
})
}
}