@@ -18,7 +18,7 @@ package org.typelevel.catapult
1818
1919import cats .effect .std .{Dispatcher , Queue }
2020import cats .effect .{Async , Resource }
21- import cats .~>
21+ import cats .{ ~> , Applicative }
2222import com .launchdarkly .sdk .server .interfaces .{FlagValueChangeEvent , FlagValueChangeListener }
2323import com .launchdarkly .sdk .server .{LDClient , LDConfig }
2424import com .launchdarkly .sdk .LDValue
@@ -115,7 +115,7 @@ trait LaunchDarklyClient[F[_]] {
115115 */
116116 def flush : F [Unit ]
117117
118- def mapK [G [_]](fk : F ~> G ): LaunchDarklyClient [G ]
118+ def mapK [G [_]](fk : F ~> G ): LaunchDarklyClient [G ] = LaunchDarklyClient .mapK[ F , G ]( this )(fk)
119119}
120120
121121object LaunchDarklyClient {
@@ -213,17 +213,84 @@ object LaunchDarklyClient {
213213
214214 override def flush : F [Unit ] = unsafeWithJavaClient(_.flush())
215215
216- override def mapK [G [_]](fk : F ~> G ): LaunchDarklyClient [G ] = new LaunchDarklyClient .Default [G ] {
217- override def unsafeWithJavaClient [A ](f : LDClient => A ): G [A ] = fk(
218- self.unsafeWithJavaClient(f)
219- )
216+ // TODO: Remove on next bin changing release, had to keep this for bin-compat.
217+ override def mapK [G [_]](fk : F ~> G ): LaunchDarklyClient [G ] = LaunchDarklyClient .mapK(this )(fk)
218+ }
219+
220+ def noop [F [_]](implicit F : Applicative [F ]): LaunchDarklyClient [F ] = new LaunchDarklyClient [F ] {
221+ override def boolVariation [Ctx : ContextEncoder ](
222+ featureKey : String ,
223+ context : Ctx ,
224+ defaultValue : Boolean ,
225+ ): F [Boolean ] = F .pure(defaultValue)
226+ override def doubleVariation [Ctx : ContextEncoder ](
227+ featureKey : String ,
228+ context : Ctx ,
229+ defaultValue : Double ,
230+ ): F [Double ] = F .pure(defaultValue)
231+ override def intVariation [Ctx : ContextEncoder ](
232+ featureKey : String ,
233+ context : Ctx ,
234+ defaultValue : Int ,
235+ ): F [Int ] = F .pure(defaultValue)
236+ override def jsonValueVariation [Ctx : ContextEncoder ](
237+ featureKey : String ,
238+ context : Ctx ,
239+ defaultValue : LDValue ,
240+ ): F [LDValue ] = F .pure(defaultValue)
241+ override def stringVariation [Ctx : ContextEncoder ](
242+ featureKey : String ,
243+ context : Ctx ,
244+ defaultValue : String ,
245+ ): F [String ] = F .pure(defaultValue)
246+
247+ override def trackFlagValueChanges [Ctx : ContextEncoder ](
248+ featureKey : String ,
249+ context : Ctx ,
250+ ): fs2.Stream [F , FlagValueChangeEvent ] = fs2.Stream .empty
251+
252+ override def flush : F [Unit ] = Applicative [F ].unit
253+ }
254+
255+ def mapK [F [_], G [_]](self : LaunchDarklyClient [F ])(fk : F ~> G ): LaunchDarklyClient [G ] =
256+ new LaunchDarklyClient [G ] {
257+ override def boolVariation [Ctx : ContextEncoder ](
258+ featureKey : String ,
259+ context : Ctx ,
260+ defaultValue : Boolean ,
261+ ): G [Boolean ] = fk(self.boolVariation(featureKey, context, defaultValue))
262+
263+ override def doubleVariation [Ctx : ContextEncoder ](
264+ featureKey : String ,
265+ context : Ctx ,
266+ defaultValue : Double ,
267+ ): G [Double ] = fk(self.doubleVariation(featureKey, context, defaultValue))
268+
269+ override def intVariation [Ctx : ContextEncoder ](
270+ featureKey : String ,
271+ context : Ctx ,
272+ defaultValue : Int ,
273+ ): G [Int ] = fk(self.intVariation(featureKey, context, defaultValue))
274+
275+ override def jsonValueVariation [Ctx : ContextEncoder ](
276+ featureKey : String ,
277+ context : Ctx ,
278+ defaultValue : LDValue ,
279+ ): G [LDValue ] = fk(self.jsonValueVariation(featureKey, context, defaultValue))
280+
281+ override def stringVariation [Ctx : ContextEncoder ](
282+ featureKey : String ,
283+ context : Ctx ,
284+ defaultValue : String ,
285+ ): G [String ] = fk(self.stringVariation(featureKey, context, defaultValue))
220286
221- override def trackFlagValueChanges [Ctx ](featureKey : String , context : Ctx )(implicit
222- ctxEncoder : ContextEncoder [Ctx ]
223- ): Stream [G , FlagValueChangeEvent ] =
287+ override def trackFlagValueChanges [Ctx : ContextEncoder ](
288+ featureKey : String ,
289+ context : Ctx ,
290+ ): fs2.Stream [G , FlagValueChangeEvent ] =
224291 self.trackFlagValueChanges(featureKey, context).translate(fk)
225292
226293 override def flush : G [Unit ] = fk(self.flush)
227294 }
228- }
295+
229296}
0 commit comments