/** Read-only Unicode inspection utility for defensive research. */ export type CodePointRecord = { position: number; codePoint: string; printable: string; invisibleFormat: boolean; }; const FORMAT = /\p{Cf}/u; export function inspectUnicode(input: string): CodePointRecord[] { return Array.from(input).map((character, position) => ({ position, codePoint: `U+${character.codePointAt(0)!.toString(16).toUpperCase().padStart(4, '0')}`, printable: FORMAT.test(character) ? '[FORMAT]' : character, invisibleFormat: FORMAT.test(character), })); } export function auditText(input: string) { const points = inspectUnicode(input); return { input, codePoints: points, formatCharacterCount: points.filter((point) => point.invisibleFormat).length, normalizedNFC: input.normalize('NFC'), normalizedNFKC: input.normalize('NFKC'), // Removing format characters is a diagnostic view, not a safe universal sanitizer. withoutFormatCharacters: Array.from(input).filter((c) => !FORMAT.test(c)).join(''), }; }