(directives: CSPDirectives)
| 171 | * Build CSP string from directives object |
| 172 | */ |
| 173 | export function buildCSPString(directives: CSPDirectives): string { |
| 174 | return Object.entries(directives) |
| 175 | .map(([directive, sources]) => { |
| 176 | if (!sources || sources.length === 0) return '' |
| 177 | const validSources = sources.filter((source: string) => source && source.trim() !== '') |
| 178 | if (validSources.length === 0) return '' |
| 179 | return `${directive} ${validSources.join(' ')}` |
| 180 | }) |
| 181 | .filter(Boolean) |
| 182 | .join('; ') |
| 183 | } |
| 184 | |
| 185 | /** |
| 186 | * Generate runtime CSP header with dynamic environment variables. |
no test coverage detected