| 512 | } |
| 513 | |
| 514 | transformJson<E extends ResponseJSON<any>>(json: E): E { |
| 515 | const keys = Object.keys(json.data[0] || {}); |
| 516 | const response = { |
| 517 | ...json, |
| 518 | data: json.data.map((item) => { |
| 519 | return keys.reduce((acc, key) => { |
| 520 | const meta = json.meta?.find((m) => m.name === key); |
| 521 | const transformer = this._transform?.[key]; |
| 522 | |
| 523 | if (transformer) { |
| 524 | return { |
| 525 | ...acc, |
| 526 | [key]: transformer(item), |
| 527 | }; |
| 528 | } |
| 529 | |
| 530 | return { |
| 531 | ...acc, |
| 532 | [key]: |
| 533 | item[key] && meta?.type.includes('Int') |
| 534 | ? Number.parseFloat(item[key] as string) |
| 535 | : item[key], |
| 536 | }; |
| 537 | }, {} as T); |
| 538 | }), |
| 539 | }; |
| 540 | return response; |
| 541 | } |
| 542 | |
| 543 | transform(transformations: Record<string, (item: T) => any>): this { |
| 544 | this._transform = transformations; |