import type { Plugin } from '@dotcom-tool-kit/plugin' export interface Conflict { plugin: Plugin conflicting: T[] } export function isConflict(thing: unknown): thing is Conflict { return Boolean((thing as Conflict).conflicting) } export function findConflictingEntries( items: Record> ): [string, Conflict][] { return Object.entries(items).filter((entry): entry is [string, Conflict] => isConflict(entry[1])) } export function findConflicts(items: (U | Conflict)[]): Conflict[] { const conflicts: Conflict[] = [] for (const item of items) { if (isConflict(item)) { conflicts.push(item) } } return conflicts } export function withoutConflicts(items: (U | Conflict)[]): U[] { const nonConflicts: U[] = [] for (const item of items) { if (!isConflict(item)) { nonConflicts.push(item) } } return nonConflicts }