открываешь табличный процессор (excel/libre calc/google spreadsheet/..) открываешь в соседнем окне документацию по используемой библиотеке/фреймворке/базе данных (или исходники, если документация как обычно не полна), и собираешь строчка за строчкой все виды ошибок в первой колонке... пытаясь объединить однотипные ошибки (например not found везде имеет один смысл, или connection error/file not found для того же sqlite)...
err.code.X === "U1" показать "Пользователь не найден". Вместо вывода err.message try { /* ... */} catch(e) { throw new UserRepoError() }любые проверки можно делать на этом этапе: userRepository.save(user);
const user = userRepository.getById(123);
user.changeFirstname('John2'); // проверяем вход => записываем в User.firstname
userRepository.save(user);