( messages: T[], rules: DesensitizeRule[], logger: PreprocessLogger )
| 214 | } |
| 215 | |
| 216 | function applyDesensitize<T extends PreprocessableMessage>( |
| 217 | messages: T[], |
| 218 | rules: DesensitizeRule[], |
| 219 | logger: PreprocessLogger |
| 220 | ): T[] { |
| 221 | const compiledRules = compileRules(rules, logger) |
| 222 | if (compiledRules.length === 0) return messages |
| 223 | |
| 224 | return messages.map((msg) => { |
| 225 | if (!msg.content) return msg |
| 226 | let content = msg.content |
| 227 | for (const { regex, replacement } of compiledRules) { |
| 228 | regex.lastIndex = 0 |
| 229 | content = content.replace(regex, replacement) |
| 230 | } |
| 231 | if (content === msg.content) return msg |
| 232 | return { ...msg, content } |
| 233 | }) |
| 234 | } |
| 235 | |
| 236 | const regexCache = new Map<string, RegExp | null>() |
| 237 |
no test coverage detected