file-diff.ts 814 B

123456789101112131415161718192021222324252627282930
  1. import {
  2. FileChanged,
  3. FileDiff,
  4. FileRemoved,
  5. FileRenamed,
  6. } from '../services/types/file'
  7. export function isFileChanged(fileDiff: FileDiff): fileDiff is FileChanged {
  8. return 'operation' in fileDiff
  9. }
  10. export function isFileRenamed(fileDiff: FileDiff): fileDiff is FileRenamed {
  11. return isFileChanged(fileDiff) && fileDiff.operation === 'renamed'
  12. }
  13. export function isFileRemoved(fileDiff: FileDiff): fileDiff is FileRemoved {
  14. return isFileChanged(fileDiff) && fileDiff.operation === 'removed'
  15. }
  16. export function isFileEditable(fileDiff: FileDiff) {
  17. return 'editable' in fileDiff
  18. ? fileDiff.editable
  19. : fileDiff.operation === 'edited'
  20. }
  21. export function fileFinalPathname(fileDiff: FileDiff) {
  22. return (
  23. (isFileRenamed(fileDiff) ? fileDiff.newPathname : null) || fileDiff.pathname
  24. )
  25. }