( accessToken: string, folderIds: string[], requestId: string, logger: Logger )
| 324 | } |
| 325 | |
| 326 | async function resolveWellKnownFolderIds( |
| 327 | accessToken: string, |
| 328 | folderIds: string[], |
| 329 | requestId: string, |
| 330 | logger: Logger |
| 331 | ): Promise<Map<string, string>> { |
| 332 | const resolvedIds = new Map<string, string>() |
| 333 | const wellKnownFolders = folderIds.filter(isWellKnownFolderName) |
| 334 | if (wellKnownFolders.length === 0) return resolvedIds |
| 335 | |
| 336 | const resolutions = await Promise.all( |
| 337 | wellKnownFolders.map(async (folderName) => { |
| 338 | const actualId = await resolveWellKnownFolderId(accessToken, folderName, requestId, logger) |
| 339 | return { folderName, actualId } |
| 340 | }) |
| 341 | ) |
| 342 | |
| 343 | for (const { folderName, actualId } of resolutions) { |
| 344 | if (actualId) { |
| 345 | resolvedIds.set(folderName.toLowerCase(), actualId) |
| 346 | } |
| 347 | } |
| 348 | |
| 349 | logger.info( |
| 350 | `[${requestId}] Resolved ${resolvedIds.size}/${wellKnownFolders.length} well-known folders` |
| 351 | ) |
| 352 | return resolvedIds |
| 353 | } |
| 354 | |
| 355 | function filterEmailsByFolder( |
| 356 | emails: OutlookEmail[], |
no test coverage detected