* Normalizes a successful Vanta API response body into the operation's * documented output shape.
(params: VantaQueryBody, data: unknown)
| 278 | * documented output shape. |
| 279 | */ |
| 280 | function buildVantaOutput(params: VantaQueryBody, data: unknown): Record<string, unknown> { |
| 281 | switch (params.operation) { |
| 282 | case 'vanta_list_frameworks': { |
| 283 | const { data: items, pageInfo } = getVantaListResults(data) |
| 284 | return { frameworks: items.map(normalizeVantaFramework), pageInfo } |
| 285 | } |
| 286 | case 'vanta_get_framework': |
| 287 | return { framework: normalizeVantaFrameworkDetail(asVantaRecord(data)) } |
| 288 | case 'vanta_list_framework_controls': |
| 289 | case 'vanta_list_controls': { |
| 290 | const { data: items, pageInfo } = getVantaListResults(data) |
| 291 | return { controls: items.map(normalizeVantaControl), pageInfo } |
| 292 | } |
| 293 | case 'vanta_get_control': |
| 294 | return { control: normalizeVantaControlDetail(asVantaRecord(data)) } |
| 295 | case 'vanta_list_control_tests': |
| 296 | case 'vanta_list_tests': { |
| 297 | const { data: items, pageInfo } = getVantaListResults(data) |
| 298 | return { tests: items.map(normalizeVantaTest), pageInfo } |
| 299 | } |
| 300 | case 'vanta_get_test': |
| 301 | return { test: normalizeVantaTest(asVantaRecord(data)) } |
| 302 | case 'vanta_list_test_entities': { |
| 303 | const { data: items, pageInfo } = getVantaListResults(data) |
| 304 | return { entities: items.map(normalizeVantaTestEntity), pageInfo } |
| 305 | } |
| 306 | case 'vanta_list_control_documents': |
| 307 | case 'vanta_list_documents': { |
| 308 | const { data: items, pageInfo } = getVantaListResults(data) |
| 309 | return { documents: items.map(normalizeVantaDocument), pageInfo } |
| 310 | } |
| 311 | case 'vanta_get_document': |
| 312 | return { document: normalizeVantaDocumentDetail(asVantaRecord(data)) } |
| 313 | case 'vanta_list_document_uploads': { |
| 314 | const { data: items, pageInfo } = getVantaListResults(data) |
| 315 | return { uploads: items.map(normalizeVantaUploadedFile), pageInfo } |
| 316 | } |
| 317 | case 'vanta_submit_document': |
| 318 | return { documentId: params.documentId, submitted: true } |
| 319 | case 'vanta_list_people': { |
| 320 | const { data: items, pageInfo } = getVantaListResults(data) |
| 321 | return { people: items.map(normalizeVantaPerson), pageInfo } |
| 322 | } |
| 323 | case 'vanta_get_person': |
| 324 | return { person: normalizeVantaPerson(asVantaRecord(data)) } |
| 325 | case 'vanta_list_policies': { |
| 326 | const { data: items, pageInfo } = getVantaListResults(data) |
| 327 | return { policies: items.map(normalizeVantaPolicy), pageInfo } |
| 328 | } |
| 329 | case 'vanta_get_policy': |
| 330 | return { policy: normalizeVantaPolicy(asVantaRecord(data)) } |
| 331 | case 'vanta_list_vendors': { |
| 332 | const { data: items, pageInfo } = getVantaListResults(data) |
| 333 | return { vendors: items.map(normalizeVantaVendor), pageInfo } |
| 334 | } |
| 335 | case 'vanta_get_vendor': |
| 336 | return { vendor: normalizeVantaVendor(asVantaRecord(data)) } |
| 337 | case 'vanta_list_monitored_computers': { |
no test coverage detected