22 lines
806 B
TypeScript
22 lines
806 B
TypeScript
/**
|
|
* Pure, deterministic dedup key for maintenance threads.
|
|
*
|
|
* Derives a stable key from the merge-base + head SHAs so that repeated
|
|
* scheduled sync runs against the same upstream state collapse onto a single
|
|
* maintenance thread instead of creating a new one each run. NEVER involves
|
|
* Date.now()/random — the key must be identical for identical inputs.
|
|
*
|
|
* Returns `null` when the head SHA is missing/empty (unresolvable head → the
|
|
* caller cannot dedup and should SKIP thread creation rather than mint a
|
|
* unique key).
|
|
*/
|
|
export const maintenanceDedupKey = (input: {
|
|
mergeBaseSha?: string;
|
|
headSha?: string;
|
|
}): string | null => {
|
|
const head = input.headSha?.trim();
|
|
if (!head) return null;
|
|
const base = input.mergeBaseSha?.trim() || 'nobase';
|
|
return `${base}:${head}`;
|
|
};
|