| 16 | } |
| 17 | |
| 18 | export const compose = (...redactors: ReadonlyArray<Partial<Redactor>>): Redactor => { |
| 19 | const requests = redactors.map((r) => r.request).filter((fn): fn is Redactor["request"] => fn !== undefined) |
| 20 | const responses = redactors.map((r) => r.response).filter((fn): fn is Redactor["response"] => fn !== undefined) |
| 21 | return { |
| 22 | request: requests.length === 0 ? identity : (snapshot) => requests.reduce((acc, fn) => fn(acc), snapshot), |
| 23 | response: responses.length === 0 ? identity : (snapshot) => responses.reduce((acc, fn) => fn(acc), snapshot), |
| 24 | } |
| 25 | } |
| 26 | |
| 27 | export interface HeaderOptions { |
| 28 | readonly allow?: ReadonlyArray<string> |