( data: TransformData, transform: TargetTransform, isHeader: boolean )
| 214 | } |
| 215 | |
| 216 | function applyTransform( |
| 217 | data: TransformData, |
| 218 | transform: TargetTransform, |
| 219 | isHeader: boolean |
| 220 | ) { |
| 221 | const keySelector = transform.target?.key; |
| 222 | if (keySelector == null) { |
| 223 | return; |
| 224 | } |
| 225 | if (isHeader && (transform.op === 'set' || transform.op === 'append')) { |
| 226 | if (typeof keySelector === 'string' && !isValidHeaderName(keySelector)) { |
| 227 | return; |
| 228 | } |
| 229 | if (!hasValidHeaderArgs(transform.args)) { |
| 230 | return; |
| 231 | } |
| 232 | } |
| 233 | const matchedKeys = findMatchingKeys(data, keySelector); |
| 234 | switch (transform.op) { |
| 235 | case 'set': |
| 236 | opSet(data, matchedKeys, keySelector, transform.args); |
| 237 | break; |
| 238 | case 'append': |
| 239 | opAppend(data, matchedKeys, keySelector, transform.args, isHeader); |
| 240 | break; |
| 241 | case 'delete': |
| 242 | opDelete(data, matchedKeys, transform.args, isHeader); |
| 243 | break; |
| 244 | default: |
| 245 | break; |
| 246 | } |
| 247 | } |
| 248 | |
| 249 | function isValidRequestPath(path: string): boolean { |
| 250 | if (path === '' || path.length > 2048) { |
no test coverage detected