import { resolveLanguage } from "@pierre/diffs"; import type { FileContents, FileDiffMetadata, SupportedLanguages } from "@pierre/diffs"; import type { DiffViewerPayload } from "./types.js";
const PASSTHROUGH_LANGUAGE_HINTS = new Set<SupportedLanguages>(["ansi", "text"]);
type DiffPayloadFile = FileContents | FileDiffMetadata;
function normalizeOptionalString(value: unknown): string | undefined { if (typeof value !== "string") { return undefined;
} const trimmed = value.trim(); return trimmed ? trimmed : undefined;
}
export async function normalizeSupportedLanguageHint(
value?: string,
): Promise<SupportedLanguages | undefined> { const normalized = normalizeOptionalString(value); if (!normalized) { return undefined;
} if (PASSTHROUGH_LANGUAGE_HINTS.has(normalized as SupportedLanguages)) { return normalized as SupportedLanguages;
} try {
await resolveLanguage(normalized as Exclude<SupportedLanguages, "text" | "ansi">); return normalized as SupportedLanguages;
} catch { return undefined;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.