1 package org.make.api.technical 2 3 import cats.data.Chain 4 5 import scala.concurrent.Future 6 import scala.concurrent.ExecutionContext.Implicits.global 7 8 object Traverses { 9 implicit class RichTraverse[A](as: List[A]) { 10 def sequentialTraverse[B](f: A => Future[B]): Future[List[B]] = { 11 as.foldLeft(Future.successful(Chain.empty[B])) { (accM, a) => 12 for { 13 acc <- accM 14 b <- f(a) 15 } yield acc :+ b 16 } 17 .map(_.toList) 18 } 19 } 20 21 }
| Line | Stmt Id | Pos | Tree | Symbol | Tests | Code |
|---|---|---|---|---|---|---|
| 11 | 155 | 319 - 333 | TypeApply | cats.data.Chain.empty | cats.data.Chain.empty[B] | |
| 11 | 40 | 301 - 334 | Apply | scala.concurrent.Future.successful | scala.concurrent.Future.successful[cats.data.Chain[B]](cats.data.Chain.empty[B]) | |
| 13 | 142 | 361 - 441 | ApplyToImplicitArgs | scala.concurrent.Future.flatMap | accM.flatMap[cats.data.Chain[B]](((acc: cats.data.Chain[B]) => f.apply(a).map[cats.data.Chain[B]](((b: B) => acc.:+[B](b)))(scala.concurrent.ExecutionContext.Implicits.global)))(scala.concurrent.ExecutionContext.Implicits.global) | |
| 13 | 258 | 383 - 383 | Select | scala.concurrent.ExecutionContext.Implicits.global | scala.concurrent.ExecutionContext.Implicits.global | |
| 14 | 310 | 403 - 441 | ApplyToImplicitArgs | scala.concurrent.Future.map | f.apply(a).map[cats.data.Chain[B]](((b: B) => acc.:+[B](b)))(scala.concurrent.ExecutionContext.Implicits.global) | |
| 14 | 105 | 407 - 407 | Select | scala.concurrent.ExecutionContext.Implicits.global | scala.concurrent.ExecutionContext.Implicits.global | |
| 15 | 236 | 433 - 441 | Apply | cats.data.Chain.:+ | acc.:+[B](b) | |
| 17 | 211 | 464 - 464 | Select | scala.concurrent.ExecutionContext.Implicits.global | scala.concurrent.ExecutionContext.Implicits.global | |
| 17 | 14 | 465 - 473 | Select | cats.data.Chain.toList | x$1.toList | |
| 17 | 156 | 289 - 474 | ApplyToImplicitArgs | scala.concurrent.Future.map | RichTraverse.this.as.foldLeft[scala.concurrent.Future[cats.data.Chain[B]]](scala.concurrent.Future.successful[cats.data.Chain[B]](cats.data.Chain.empty[B]))(((accM: scala.concurrent.Future[cats.data.Chain[B]], a: A) => accM.flatMap[cats.data.Chain[B]](((acc: cats.data.Chain[B]) => f.apply(a).map[cats.data.Chain[B]](((b: B) => acc.:+[B](b)))(scala.concurrent.ExecutionContext.Implicits.global)))(scala.concurrent.ExecutionContext.Implicits.global))).map[List[B]](((x$1: cats.data.Chain[B]) => x$1.toList))(scala.concurrent.ExecutionContext.Implicits.global) |