package sse import ( "strings" "unicode/utf8" ) const minContinuationSnapshotLen = 32 func TrimContinuationOverlap(existing, incoming string) string { if incoming == "" { return "" } if existing == "" { return incoming } if utf8.RuneCountInString(incoming) < minContinuationSnapshotLen { return incoming } if len(incoming) > len(existing) { if strings.HasPrefix(incoming, existing) { return incoming[len(existing):] } return incoming } if len(incoming) < len(existing) && strings.HasPrefix(existing, incoming) { return "" } return incoming } func TrimContinuationOverlapFromBuilder(existing *strings.Builder, incoming string) string { if incoming == "" { return "" } if existing == nil || existing.Len() == 0 { return incoming } if utf8.RuneCountInString(incoming) < minContinuationSnapshotLen { return incoming } existingLen := existing.Len() if len(incoming) > existingLen { existingStr := existing.String() if strings.HasPrefix(incoming, existingStr) { return incoming[existingLen:] } return incoming } if len(incoming) < existingLen { existingStr := existing.String() if strings.HasPrefix(existingStr, incoming) { return "" } } return incoming }