entrySummary

tcmts.share.entrySummary · #6hxdahch · term · runs anywhere

What a history entry changed, from the entry before it (a merge: what it brought), kept: an entry never changes.

import { entryDiff, summaryOf } from "#codebase/tcmts/share";
import type { EntrySummary, Share } from "#codebase/tcmts/share";

export function entrySummary(s: Pick<Share, "cb" | "cache">, hash: string): EntrySummary {
  const kept = s.cache.entries.get(hash);
  if (kept) return kept;
  const d = entryDiff(s, hash);
  const summary = d
    ? summaryOf(d)
    : { edited: [], added: [], removed: [], renamed: [], propagated: 0 };
  s.cache.entries.set(hash, summary);
  if (s.cache.entries.size > 20_000) s.cache.entries.delete(s.cache.entries.keys().next().value!);
  return summary;
}

uses

used by