File size: 619 Bytes
4e23b01
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { CorruptFrameError } from './codec.js';

export type StorageErrorAction = 'rebuild' | 'transient';

export function classifyStorageError(error: unknown): StorageErrorAction {
  if (error instanceof AggregateError) {
    return error.errors.some((inner) => classifyStorageError(inner) === 'rebuild')
      ? 'rebuild'
      : 'transient';
  }
  if (error instanceof SyntaxError || error instanceof CorruptFrameError) return 'rebuild';
  const code = (error as { code?: unknown } | null | undefined)?.code;
  if (code === 'WAL_WRITE_DISABLED' || code === 'WAL_POISONED') return 'rebuild';
  return 'transient';
}