From 16f817ab7fc3a3e416cb121a029504f020ba0595 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 11:54:04 +0200 Subject: [PATCH 1/8] Move out arrow-resilience module from arrow-fx --- .../api/arrow-fx-resilience.api | 282 ------------------ .../kotlin/arrow/fx/resilience/Platform.kt | 9 - .../arrow-resilience}/README.md | 0 .../arrow-resilience/api/arrow-resilience.api | 282 ++++++++++++++++++ .../arrow-resilience}/build.gradle.kts | 0 .../arrow-resilience}/gradle.properties | 0 .../arrow-resilience}/knit.properties | 0 .../arrow}/resilience/CircuitBreaker.kt | 16 +- .../kotlin/arrow}/resilience/Saga.kt | 5 +- .../kotlin/arrow}/resilience/Schedule.kt | 9 +- .../arrow}/resilience/common/Platform.kt | 2 +- .../kotlin/arrow}/resilience/flow.kt | 4 +- .../kotlin/arrow}/resilience/predef.kt | 2 +- .../arrow}/resilience/CircuitBreakerTest.kt | 8 +- .../kotlin/arrow}/resilience/FlowTest.kt | 2 +- .../kotlin/arrow/resilience/Platform.kt | 9 + .../kotlin/arrow}/resilience/SagaSpec.kt | 4 +- .../kotlin/arrow}/resilience/ScheduleTest.kt | 9 +- .../arrow}/resilience/common/platform.kt | 2 +- .../kotlin/arrow}/resilience/timeInMillis.kt | 2 +- .../arrow}/resilience/common/platform.kt | 2 +- .../kotlin/arrow}/resilience/timeInMillis.kt | 2 +- .../examples/example-circuitbreaker-01.kt | 4 +- .../examples/example-circuitbreaker-02.kt | 8 +- .../kotlin/examples/example-flow-01.kt | 4 +- .../arrow}/resilience/common/platform.kt | 2 +- .../kotlin/arrow}/resilience/timeInMillis.kt | 2 +- settings.gradle.kts | 4 +- 28 files changed, 341 insertions(+), 334 deletions(-) delete mode 100644 arrow-libs/fx/arrow-fx-resilience/api/arrow-fx-resilience.api delete mode 100644 arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/Platform.kt rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/README.md (100%) create mode 100644 arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/build.gradle.kts (100%) rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/gradle.properties (100%) rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/knit.properties (100%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/CircuitBreaker.kt (98%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/Saga.kt (98%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/Schedule.kt (98%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/common/Platform.kt (71%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/flow.kt (95%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx => resilience/arrow-resilience/src/commonMain/kotlin/arrow}/resilience/predef.kt (85%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx => resilience/arrow-resilience/src/commonTest/kotlin/arrow}/resilience/CircuitBreakerTest.kt (98%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx => resilience/arrow-resilience/src/commonTest/kotlin/arrow}/resilience/FlowTest.kt (98%) create mode 100644 arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/Platform.kt rename arrow-libs/{fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx => resilience/arrow-resilience/src/commonTest/kotlin/arrow}/resilience/SagaSpec.kt (98%) rename arrow-libs/{fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx => resilience/arrow-resilience/src/commonTest/kotlin/arrow}/resilience/ScheduleTest.kt (97%) rename arrow-libs/{fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx => resilience/arrow-resilience/src/jsMain/kotlin/arrow}/resilience/common/platform.kt (59%) rename arrow-libs/{fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx => resilience/arrow-resilience/src/jsMain/kotlin/arrow}/resilience/timeInMillis.kt (89%) rename arrow-libs/{fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx => resilience/arrow-resilience/src/jvmMain/kotlin/arrow}/resilience/common/platform.kt (60%) rename arrow-libs/{fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx => resilience/arrow-resilience/src/jvmMain/kotlin/arrow}/resilience/timeInMillis.kt (87%) rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt (92%) rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt (89%) rename arrow-libs/{fx/arrow-fx-resilience => resilience/arrow-resilience}/src/jvmTest/kotlin/examples/example-flow-01.kt (82%) rename arrow-libs/{fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx => resilience/arrow-resilience/src/nativeMain/kotlin/arrow}/resilience/common/platform.kt (61%) rename arrow-libs/{fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx => resilience/arrow-resilience/src/nativeMain/kotlin/arrow}/resilience/timeInMillis.kt (88%) diff --git a/arrow-libs/fx/arrow-fx-resilience/api/arrow-fx-resilience.api b/arrow-libs/fx/arrow-fx-resilience/api/arrow-fx-resilience.api deleted file mode 100644 index 9173c46338b..00000000000 --- a/arrow-libs/fx/arrow-fx-resilience/api/arrow-fx-resilience.api +++ /dev/null @@ -1,282 +0,0 @@ -public final class arrow/fx/resilience/CircuitBreaker { - public static final field Companion Larrow/fx/resilience/CircuitBreaker$Companion; - public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;DDDLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun awaitClose (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun doOnClosed (Lkotlin/jvm/functions/Function1;)Larrow/fx/resilience/CircuitBreaker; - public final fun doOnHalfOpen (Lkotlin/jvm/functions/Function1;)Larrow/fx/resilience/CircuitBreaker; - public final fun doOnOpen (Lkotlin/jvm/functions/Function1;)Larrow/fx/resilience/CircuitBreaker; - public final fun doOnRejectedTask (Lkotlin/jvm/functions/Function1;)Larrow/fx/resilience/CircuitBreaker; - public final fun protectEither (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun protectOrThrow (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun state (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/CircuitBreaker$Companion { - public final fun invoke-MWqDXGA (JLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Larrow/fx/resilience/CircuitBreaker; - public static synthetic fun invoke-MWqDXGA$default (Larrow/fx/resilience/CircuitBreaker$Companion;JLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Larrow/fx/resilience/CircuitBreaker; - public final fun of (DLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun of$default (Larrow/fx/resilience/CircuitBreaker$Companion;DLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun of-MWqDXGA (JLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun of-MWqDXGA$default (Larrow/fx/resilience/CircuitBreaker$Companion;JLarrow/fx/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/CircuitBreaker$ExecutionRejected : java/lang/Throwable { - public fun (Ljava/lang/String;Larrow/fx/resilience/CircuitBreaker$State;)V - public final fun getReason ()Ljava/lang/String; - public final fun getState ()Larrow/fx/resilience/CircuitBreaker$State; -} - -public abstract class arrow/fx/resilience/CircuitBreaker$OpeningStrategy { -} - -public final class arrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count : arrow/fx/resilience/CircuitBreaker$OpeningStrategy { - public static final field Companion Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count$Companion; - public fun (II)V - public synthetic fun (IIILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()I - public final fun component2 ()I - public final fun copy (II)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count; - public static synthetic fun copy$default (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count;IIILjava/lang/Object;)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count; - public fun equals (Ljava/lang/Object;)Z - public final fun getFailuresCount ()I - public final fun getMaxFailures ()I - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count$Companion { - public final fun invoke (I)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$Count; -} - -public final class arrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow : arrow/fx/resilience/CircuitBreaker$OpeningStrategy { - public static final field Companion Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow$Companion; - public synthetic fun (Lkotlin/time/TimeSource;Ljava/util/List;JILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun component1 ()Lkotlin/time/TimeSource; - public final fun component2 ()Ljava/util/List; - public final fun component3-UwyO8pc ()J - public final fun component4 ()I - public final fun copy-exY8QGI (Lkotlin/time/TimeSource;Ljava/util/List;JI)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; - public static synthetic fun copy-exY8QGI$default (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow;Lkotlin/time/TimeSource;Ljava/util/List;JIILjava/lang/Object;)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; - public fun equals (Ljava/lang/Object;)Z - public final fun getFailures ()Ljava/util/List; - public final fun getMaxFailures ()I - public final fun getTimeSource ()Lkotlin/time/TimeSource; - public final fun getWindowDuration-UwyO8pc ()J - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow$Companion { - public final fun invoke-8Mi8wO0 (Lkotlin/time/TimeSource;JI)Larrow/fx/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; -} - -public abstract class arrow/fx/resilience/CircuitBreaker$State { - public abstract fun getOpeningStrategy ()Larrow/fx/resilience/CircuitBreaker$OpeningStrategy; -} - -public final class arrow/fx/resilience/CircuitBreaker$State$Closed : arrow/fx/resilience/CircuitBreaker$State { - public fun (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy;)V - public fun getOpeningStrategy ()Larrow/fx/resilience/CircuitBreaker$OpeningStrategy; -} - -public final class arrow/fx/resilience/CircuitBreaker$State$HalfOpen : arrow/fx/resilience/CircuitBreaker$State { - public fun (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy;D)V - public synthetic fun (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy;JLkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun equals (Ljava/lang/Object;)Z - public fun getOpeningStrategy ()Larrow/fx/resilience/CircuitBreaker$OpeningStrategy; - public final fun getResetTimeout-UwyO8pc ()J - public final fun getResetTimeoutNanos ()D - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/CircuitBreaker$State$Open : arrow/fx/resilience/CircuitBreaker$State { - public fun (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy;JD)V - public synthetic fun (Larrow/fx/resilience/CircuitBreaker$OpeningStrategy;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun equals (Ljava/lang/Object;)Z - public final fun getExpiresAt ()Lkotlin/time/TimeMark; - public fun getOpeningStrategy ()Larrow/fx/resilience/CircuitBreaker$OpeningStrategy; - public final fun getResetTimeout-UwyO8pc ()J - public final fun getResetTimeoutNanos ()D - public final fun getStartedAt ()Lkotlin/time/TimeMark; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/FlowKt { - public static final fun retry-dkRSkxk (Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; -} - -public final class arrow/fx/resilience/SagaActionStep { - public static final field INSTANCE Larrow/fx/resilience/SagaActionStep; -} - -public final class arrow/fx/resilience/SagaBuilder : arrow/fx/resilience/SagaScope { - public fun ()V - public fun (Ljava/util/concurrent/atomic/AtomicReference;)V - public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun bind (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun totalCompensation (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public abstract interface annotation class arrow/fx/resilience/SagaDSLMarker : java/lang/annotation/Annotation { -} - -public final class arrow/fx/resilience/SagaKt { - public static final fun saga (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun transact (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public abstract interface class arrow/fx/resilience/SagaScope { - public abstract fun bind (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/SagaScope$DefaultImpls { - public static fun bind (Larrow/fx/resilience/SagaScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun invoke (Larrow/fx/resilience/SagaScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/Schedule { - public static final field Companion Larrow/fx/resilience/Schedule$Companion; - public static final fun and-TAF2p8g (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun and-nZJhjPk (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun and-trTh5YI (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun andThen-TAF2p8g (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun andThen-nZJhjPk (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final synthetic fun box-impl (Lkotlin/jvm/functions/Function2;)Larrow/fx/resilience/Schedule; - public static final fun collect-n7EYv7Q (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static fun constructor-impl (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun contramap-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun delayed-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun doUntil-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun doWhile-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public fun equals (Ljava/lang/Object;)Z - public static fun equals-impl (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Z - public static final fun equals-impl0 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Z - public static final fun fold-QrgEJug (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public final fun getStep ()Lkotlin/jvm/functions/Function2; - public fun hashCode ()I - public static fun hashCode-impl (Lkotlin/jvm/functions/Function2;)I - public static final fun jittered-wpSosaM (Lkotlin/jvm/functions/Function2;DDLkotlin/random/Random;)Lkotlin/jvm/functions/Function2; - public static synthetic fun jittered-wpSosaM$default (Lkotlin/jvm/functions/Function2;DDLkotlin/random/Random;ILjava/lang/Object;)Lkotlin/jvm/functions/Function2; - public static final fun log-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun map-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun mapDecision-nxrvn7M (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun or-TAF2p8g (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public static final fun repeat-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun repeatOrElse-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun repeatOrElseEither-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun toString ()Ljava/lang/String; - public static fun toString-impl (Lkotlin/jvm/functions/Function2;)Ljava/lang/String; - public final synthetic fun unbox-impl ()Lkotlin/jvm/functions/Function2; - public static final fun zipLeft-nZJhjPk (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; - public static final fun zipRight-nZJhjPk (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; -} - -public final class arrow/fx/resilience/Schedule$Companion { - public final fun collect-n7EYv7Q ()Lkotlin/jvm/functions/Function2; - public final fun doUntil-nxrvn7M (Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public final fun doWhile-nxrvn7M (Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; - public final fun exponential-WtiCasI (JD)Lkotlin/jvm/functions/Function2; - public static synthetic fun exponential-WtiCasI$default (Larrow/fx/resilience/Schedule$Companion;JDILjava/lang/Object;)Lkotlin/jvm/functions/Function2; - public final fun fibonacci-xw-eLiE (J)Lkotlin/jvm/functions/Function2; - public final fun forever-n7EYv7Q ()Lkotlin/jvm/functions/Function2; - public final fun identity-n7EYv7Q ()Lkotlin/jvm/functions/Function2; - public final fun linear-xw-eLiE (J)Lkotlin/jvm/functions/Function2; - public final fun recurs-nxrvn7M (J)Lkotlin/jvm/functions/Function2; - public final fun spaced-xw-eLiE (J)Lkotlin/jvm/functions/Function2; - public final fun unfold-QrgEJug (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; -} - -public abstract interface class arrow/fx/resilience/Schedule$Decision { - public abstract fun and (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun getOutput ()Ljava/lang/Object; - public abstract fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun or (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public abstract fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/Schedule$Decision$Continue : arrow/fx/resilience/Schedule$Decision { - public synthetic fun (Ljava/lang/Object;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V - public fun and (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun component1 ()Ljava/lang/Object; - public final fun component2-UwyO8pc ()J - public final fun component3 ()Lkotlin/jvm/functions/Function2; - public fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun copy-8Mi8wO0 (Ljava/lang/Object;JLkotlin/jvm/functions/Function2;)Larrow/fx/resilience/Schedule$Decision$Continue; - public static synthetic fun copy-8Mi8wO0$default (Larrow/fx/resilience/Schedule$Decision$Continue;Ljava/lang/Object;JLkotlin/jvm/functions/Function2;ILjava/lang/Object;)Larrow/fx/resilience/Schedule$Decision$Continue; - public fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun equals (Ljava/lang/Object;)Z - public final fun getDelay-UwyO8pc ()J - public fun getOutput ()Ljava/lang/Object; - public final fun getStep ()Lkotlin/jvm/functions/Function2; - public fun hashCode ()I - public fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun or (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/Schedule$Decision$DefaultImpls { - public static fun and (Larrow/fx/resilience/Schedule$Decision;Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun andThen (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun andThen (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun contramap (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun delayed (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun map (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun or (Larrow/fx/resilience/Schedule$Decision;Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static fun recursiveMap (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/Schedule$Decision$Done : arrow/fx/resilience/Schedule$Decision { - public fun (Ljava/lang/Object;)V - public fun and (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun component1 ()Ljava/lang/Object; - public fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public final fun copy (Ljava/lang/Object;)Larrow/fx/resilience/Schedule$Decision$Done; - public static synthetic fun copy$default (Larrow/fx/resilience/Schedule$Decision$Done;Ljava/lang/Object;ILjava/lang/Object;)Larrow/fx/resilience/Schedule$Decision$Done; - public fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun equals (Ljava/lang/Object;)Z - public fun getOutput ()Ljava/lang/Object; - public fun hashCode ()I - public fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun or (Larrow/fx/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public fun toString ()Ljava/lang/String; -} - -public final class arrow/fx/resilience/ScheduleKt { - public static final fun retry-5vsoNNI (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun retryOrElse-X2tg264 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static final fun retryOrElseEither-X2tg264 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - -public final class arrow/fx/resilience/TimeInMillisKt { - public static final fun timeInMillis ()J -} - -public final class arrow/fx/resilience/common/Platform : java/lang/Enum { - public static final field JS Larrow/fx/resilience/common/Platform; - public static final field JVM Larrow/fx/resilience/common/Platform; - public static final field Native Larrow/fx/resilience/common/Platform; - public static fun valueOf (Ljava/lang/String;)Larrow/fx/resilience/common/Platform; - public static fun values ()[Larrow/fx/resilience/common/Platform; -} - -public final class arrow/fx/resilience/common/PlatformKt { - public static final fun getPlatform ()Larrow/fx/resilience/common/Platform; -} - diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/Platform.kt b/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/Platform.kt deleted file mode 100644 index 17dc27b78d9..00000000000 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/Platform.kt +++ /dev/null @@ -1,9 +0,0 @@ -package arrow.fx.resilience - -import arrow.fx.resilience.common.Platform -import arrow.fx.resilience.common.platform - -fun stackSafeIteration(): Int = when (platform) { - Platform.JVM -> 20_000 - else -> 1_000 -} diff --git a/arrow-libs/fx/arrow-fx-resilience/README.md b/arrow-libs/resilience/arrow-resilience/README.md similarity index 100% rename from arrow-libs/fx/arrow-fx-resilience/README.md rename to arrow-libs/resilience/arrow-resilience/README.md diff --git a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api new file mode 100644 index 00000000000..cbe4dc0617a --- /dev/null +++ b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api @@ -0,0 +1,282 @@ +public final class arrow/resilience/CircuitBreaker { + public static final field Companion Larrow/resilience/CircuitBreaker$Companion; + public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;DDDLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun awaitClose (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun doOnClosed (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; + public final fun doOnHalfOpen (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; + public final fun doOnOpen (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; + public final fun doOnRejectedTask (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; + public final fun protectEither (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun protectOrThrow (Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun state (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/CircuitBreaker$Companion { + public final fun invoke-MWqDXGA (JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; + public static synthetic fun invoke-MWqDXGA$default (Larrow/resilience/CircuitBreaker$Companion;JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Larrow/resilience/CircuitBreaker; + public final fun of (DLarrow/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun of$default (Larrow/resilience/CircuitBreaker$Companion;DLarrow/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; + public final fun of-MWqDXGA (JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static synthetic fun of-MWqDXGA$default (Larrow/resilience/CircuitBreaker$Companion;JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; +} + +public final class arrow/resilience/CircuitBreaker$ExecutionRejected : java/lang/Throwable { + public fun (Ljava/lang/String;Larrow/resilience/CircuitBreaker$State;)V + public final fun getReason ()Ljava/lang/String; + public final fun getState ()Larrow/resilience/CircuitBreaker$State; +} + +public abstract class arrow/resilience/CircuitBreaker$OpeningStrategy { +} + +public final class arrow/resilience/CircuitBreaker$OpeningStrategy$Count : arrow/resilience/CircuitBreaker$OpeningStrategy { + public static final field Companion Larrow/resilience/CircuitBreaker$OpeningStrategy$Count$Companion; + public fun (II)V + public synthetic fun (IIILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()I + public final fun component2 ()I + public final fun copy (II)Larrow/resilience/CircuitBreaker$OpeningStrategy$Count; + public static synthetic fun copy$default (Larrow/resilience/CircuitBreaker$OpeningStrategy$Count;IIILjava/lang/Object;)Larrow/resilience/CircuitBreaker$OpeningStrategy$Count; + public fun equals (Ljava/lang/Object;)Z + public final fun getFailuresCount ()I + public final fun getMaxFailures ()I + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/CircuitBreaker$OpeningStrategy$Count$Companion { + public final fun invoke (I)Larrow/resilience/CircuitBreaker$OpeningStrategy$Count; +} + +public final class arrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow : arrow/resilience/CircuitBreaker$OpeningStrategy { + public static final field Companion Larrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow$Companion; + public synthetic fun (Lkotlin/time/TimeSource;Ljava/util/List;JILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lkotlin/time/TimeSource; + public final fun component2 ()Ljava/util/List; + public final fun component3-UwyO8pc ()J + public final fun component4 ()I + public final fun copy-exY8QGI (Lkotlin/time/TimeSource;Ljava/util/List;JI)Larrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; + public static synthetic fun copy-exY8QGI$default (Larrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow;Lkotlin/time/TimeSource;Ljava/util/List;JIILjava/lang/Object;)Larrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; + public fun equals (Ljava/lang/Object;)Z + public final fun getFailures ()Ljava/util/List; + public final fun getMaxFailures ()I + public final fun getTimeSource ()Lkotlin/time/TimeSource; + public final fun getWindowDuration-UwyO8pc ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow$Companion { + public final fun invoke-8Mi8wO0 (Lkotlin/time/TimeSource;JI)Larrow/resilience/CircuitBreaker$OpeningStrategy$SlidingWindow; +} + +public abstract class arrow/resilience/CircuitBreaker$State { + public abstract fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; +} + +public final class arrow/resilience/CircuitBreaker$State$Closed : arrow/resilience/CircuitBreaker$State { + public fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;)V + public fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; +} + +public final class arrow/resilience/CircuitBreaker$State$HalfOpen : arrow/resilience/CircuitBreaker$State { + public fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;D)V + public synthetic fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;JLkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; + public final fun getResetTimeout-UwyO8pc ()J + public final fun getResetTimeoutNanos ()D + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/CircuitBreaker$State$Open : arrow/resilience/CircuitBreaker$State { + public fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;JD)V + public synthetic fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun equals (Ljava/lang/Object;)Z + public final fun getExpiresAt ()Lkotlin/time/TimeMark; + public fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; + public final fun getResetTimeout-UwyO8pc ()J + public final fun getResetTimeoutNanos ()D + public final fun getStartedAt ()Lkotlin/time/TimeMark; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/FlowKt { + public static final fun retry-z663S_Q (Lkotlinx/coroutines/flow/Flow;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/flow/Flow; +} + +public final class arrow/resilience/SagaActionStep { + public static final field INSTANCE Larrow/resilience/SagaActionStep; +} + +public final class arrow/resilience/SagaBuilder : arrow/resilience/SagaScope { + public fun ()V + public fun (Ljava/util/concurrent/atomic/AtomicReference;)V + public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun bind (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun totalCompensation (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface annotation class arrow/resilience/SagaDSLMarker : java/lang/annotation/Annotation { +} + +public final class arrow/resilience/SagaKt { + public static final fun saga (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun transact (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public abstract interface class arrow/resilience/SagaScope { + public abstract fun bind (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun invoke (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun saga (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/SagaScope$DefaultImpls { + public static fun bind (Larrow/resilience/SagaScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun invoke (Larrow/resilience/SagaScope;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/Schedule { + public static final field Companion Larrow/resilience/Schedule$Companion; + public static final fun and-6Pcb-r4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun and-GI_V1oY (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun and-JfEqqxs (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun andThen-GI_V1oY (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun andThen-JfEqqxs (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final synthetic fun box-impl (Lkotlin/jvm/functions/Function2;)Larrow/resilience/Schedule; + public static final fun collect-k5utPk0 (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static fun constructor-impl (Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun contramap-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun delayed-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun doUntil-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun doWhile-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public fun equals (Ljava/lang/Object;)Z + public static fun equals-impl (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Z + public static final fun equals-impl0 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Z + public static final fun fold-juJHlvs (Lkotlin/jvm/functions/Function2;Ljava/lang/Object;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public final fun getStep ()Lkotlin/jvm/functions/Function2; + public fun hashCode ()I + public static fun hashCode-impl (Lkotlin/jvm/functions/Function2;)I + public static final fun jittered-Q7pyTlY (Lkotlin/jvm/functions/Function2;DDLkotlin/random/Random;)Lkotlin/jvm/functions/Function2; + public static synthetic fun jittered-Q7pyTlY$default (Lkotlin/jvm/functions/Function2;DDLkotlin/random/Random;ILjava/lang/Object;)Lkotlin/jvm/functions/Function2; + public static final fun log-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun map-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun mapDecision-ZhmCDx4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun or-JfEqqxs (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public static final fun repeat-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun repeatOrElse-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun repeatOrElseEither-impl (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun toString ()Ljava/lang/String; + public static fun toString-impl (Lkotlin/jvm/functions/Function2;)Ljava/lang/String; + public final synthetic fun unbox-impl ()Lkotlin/jvm/functions/Function2; + public static final fun zipLeft-GI_V1oY (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; + public static final fun zipRight-GI_V1oY (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; +} + +public final class arrow/resilience/Schedule$Companion { + public final fun collect-k5utPk0 ()Lkotlin/jvm/functions/Function2; + public final fun doUntil-ZhmCDx4 (Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public final fun doWhile-ZhmCDx4 (Lkotlin/jvm/functions/Function3;)Lkotlin/jvm/functions/Function2; + public final fun exponential-la_RjoE (JD)Lkotlin/jvm/functions/Function2; + public static synthetic fun exponential-la_RjoE$default (Larrow/resilience/Schedule$Companion;JDILjava/lang/Object;)Lkotlin/jvm/functions/Function2; + public final fun fibonacci-0qC2UY4 (J)Lkotlin/jvm/functions/Function2; + public final fun forever-k5utPk0 ()Lkotlin/jvm/functions/Function2; + public final fun identity-k5utPk0 ()Lkotlin/jvm/functions/Function2; + public final fun linear-0qC2UY4 (J)Lkotlin/jvm/functions/Function2; + public final fun recurs-ZhmCDx4 (J)Lkotlin/jvm/functions/Function2; + public final fun spaced-0qC2UY4 (J)Lkotlin/jvm/functions/Function2; + public final fun unfold-juJHlvs (Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function2; +} + +public abstract interface class arrow/resilience/Schedule$Decision { + public abstract fun and (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun getOutput ()Ljava/lang/Object; + public abstract fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun or (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public abstract fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/Schedule$Decision$Continue : arrow/resilience/Schedule$Decision { + public synthetic fun (Ljava/lang/Object;JLkotlin/jvm/functions/Function2;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun and (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun component1 ()Ljava/lang/Object; + public final fun component2-UwyO8pc ()J + public final fun component3 ()Lkotlin/jvm/functions/Function2; + public fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun copy-8Mi8wO0 (Ljava/lang/Object;JLkotlin/jvm/functions/Function2;)Larrow/resilience/Schedule$Decision$Continue; + public static synthetic fun copy-8Mi8wO0$default (Larrow/resilience/Schedule$Decision$Continue;Ljava/lang/Object;JLkotlin/jvm/functions/Function2;ILjava/lang/Object;)Larrow/resilience/Schedule$Decision$Continue; + public fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun equals (Ljava/lang/Object;)Z + public final fun getDelay-UwyO8pc ()J + public fun getOutput ()Ljava/lang/Object; + public final fun getStep ()Lkotlin/jvm/functions/Function2; + public fun hashCode ()I + public fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun or (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/Schedule$Decision$DefaultImpls { + public static fun and (Larrow/resilience/Schedule$Decision;Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun andThen (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun andThen (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun contramap (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun delayed (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun map (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun or (Larrow/resilience/Schedule$Decision;Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static fun recursiveMap (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/Schedule$Decision$Done : arrow/resilience/Schedule$Decision { + public fun (Ljava/lang/Object;)V + public fun and (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun andThen (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun component1 ()Ljava/lang/Object; + public fun contramap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public final fun copy (Ljava/lang/Object;)Larrow/resilience/Schedule$Decision$Done; + public static synthetic fun copy$default (Larrow/resilience/Schedule$Decision$Done;Ljava/lang/Object;ILjava/lang/Object;)Larrow/resilience/Schedule$Decision$Done; + public fun delayed (Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun equals (Ljava/lang/Object;)Z + public fun getOutput ()Ljava/lang/Object; + public fun hashCode ()I + public fun map (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun or (Larrow/resilience/Schedule$Decision;Lkotlin/jvm/functions/Function3;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun recursiveMap (Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public fun toString ()Ljava/lang/String; +} + +public final class arrow/resilience/ScheduleKt { + public static final fun retry-4AuOtiA (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun retryOrElse-aZo8_V4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; + public static final fun retryOrElseEither-aZo8_V4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; +} + +public final class arrow/resilience/TimeInMillisKt { + public static final fun timeInMillis ()J +} + +public final class arrow/resilience/common/Platform : java/lang/Enum { + public static final field JS Larrow/resilience/common/Platform; + public static final field JVM Larrow/resilience/common/Platform; + public static final field Native Larrow/resilience/common/Platform; + public static fun valueOf (Ljava/lang/String;)Larrow/resilience/common/Platform; + public static fun values ()[Larrow/resilience/common/Platform; +} + +public final class arrow/resilience/common/PlatformKt { + public static final fun getPlatform ()Larrow/resilience/common/Platform; +} + diff --git a/arrow-libs/fx/arrow-fx-resilience/build.gradle.kts b/arrow-libs/resilience/arrow-resilience/build.gradle.kts similarity index 100% rename from arrow-libs/fx/arrow-fx-resilience/build.gradle.kts rename to arrow-libs/resilience/arrow-resilience/build.gradle.kts diff --git a/arrow-libs/fx/arrow-fx-resilience/gradle.properties b/arrow-libs/resilience/arrow-resilience/gradle.properties similarity index 100% rename from arrow-libs/fx/arrow-fx-resilience/gradle.properties rename to arrow-libs/resilience/arrow-resilience/gradle.properties diff --git a/arrow-libs/fx/arrow-fx-resilience/knit.properties b/arrow-libs/resilience/arrow-resilience/knit.properties similarity index 100% rename from arrow-libs/fx/arrow-fx-resilience/knit.properties rename to arrow-libs/resilience/arrow-resilience/knit.properties diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/CircuitBreaker.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index 443553fd198..c3879b57bb5 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -1,13 +1,13 @@ @file:OptIn(ExperimentalTime::class) -package arrow.fx.resilience +package arrow.resilience import arrow.core.Either import arrow.core.continuations.AtomicRef import arrow.core.identity -import arrow.fx.resilience.CircuitBreaker.State.Closed -import arrow.fx.resilience.CircuitBreaker.State.HalfOpen -import arrow.fx.resilience.CircuitBreaker.State.Open +import arrow.resilience.CircuitBreaker.State.Closed +import arrow.resilience.CircuitBreaker.State.HalfOpen +import arrow.resilience.CircuitBreaker.State.Open import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.NonCancellable @@ -48,7 +48,7 @@ import kotlin.time.TimeSource * * ```kotlin * import arrow.core.Either - * import arrow.fx.resilience.CircuitBreaker + * import arrow.resilience.CircuitBreaker * import kotlin.time.Duration.Companion.seconds * import kotlin.time.ExperimentalTime * import kotlinx.coroutines.delay @@ -88,9 +88,9 @@ import kotlin.time.TimeSource * * ```kotlin * import arrow.core.Either - * import arrow.fx.resilience.CircuitBreaker - * import arrow.fx.resilience.Schedule - * import arrow.fx.resilience.retry + * import arrow.resilience.CircuitBreaker + * import arrow.resilience.Schedule + * import arrow.resilience.retry * import kotlin.time.Duration.Companion.seconds * import kotlin.time.ExperimentalTime * import kotlinx.coroutines.delay diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Saga.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Saga.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt index ef46b396562..f00a3251b70 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Saga.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience import arrow.core.continuations.AtomicRef import arrow.core.continuations.updateAndGet @@ -113,7 +113,8 @@ public suspend fun Saga.transact(): A { /** * Marker object to protect [SagaScope.saga] from calling [SagaScope.bind] in its `action` step. */ -@SagaDSLMarker public object SagaActionStep +@SagaDSLMarker +public object SagaActionStep // Internal implementation of the `saga { }` builder. @PublishedApi diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Schedule.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Schedule.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt index 4c642d75bbb..753c9a2a9dd 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/Schedule.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience import arrow.core.Either import arrow.core.None @@ -9,10 +9,9 @@ import arrow.core.merge import arrow.core.nonFatalOrThrow import arrow.core.right import arrow.core.some -import arrow.fx.resilience.Schedule.Companion.identity -import arrow.fx.resilience.Schedule.Decision.Continue -import arrow.fx.resilience.Schedule.Decision.Done -import kotlin.coroutines.RestrictsSuspension +import arrow.resilience.Schedule.Companion.identity +import arrow.resilience.Schedule.Decision.Continue +import arrow.resilience.Schedule.Decision.Done import kotlinx.coroutines.delay import kotlinx.coroutines.ensureActive import kotlin.jvm.JvmInline diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/common/Platform.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/common/Platform.kt similarity index 71% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/common/Platform.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/common/Platform.kt index 5ebe970de1c..c0fe5770e41 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/common/Platform.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/common/Platform.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience.common +package arrow.resilience.common public enum class Platform { JVM, JS, Native diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/flow.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt similarity index 95% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/flow.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt index dde2ba32f87..88f3b91f336 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/flow.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience import kotlin.time.Duration.Companion.ZERO import kotlinx.coroutines.delay @@ -14,7 +14,7 @@ import kotlinx.coroutines.flow.retryWhen * * ```kotlin * import kotlinx.coroutines.flow.* - * import arrow.fx.resilience.* + * import arrow.resilience.* * * suspend fun main(): Unit { * var counter = 0 diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/predef.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt similarity index 85% rename from arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/predef.kt rename to arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt index 3af2c8e4663..547bfda64ef 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonMain/kotlin/arrow/fx/resilience/predef.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience @Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") public expect fun timeInMillis(): Long diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/CircuitBreakerTest.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/CircuitBreakerTest.kt rename to arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt index c7b75ea64ae..f1979944846 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/CircuitBreakerTest.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt @@ -1,8 +1,10 @@ -package arrow.fx.resilience +package arrow.resilience import arrow.core.Either -import arrow.fx.resilience.CircuitBreaker.OpeningStrategy -import arrow.fx.resilience.CircuitBreaker.OpeningStrategy.SlidingWindow +import arrow.resilience.CircuitBreaker +import arrow.resilience.CircuitBreaker.OpeningStrategy +import arrow.resilience.CircuitBreaker.OpeningStrategy.SlidingWindow +import arrow.resilience.Schedule import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/FlowTest.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/FlowTest.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/FlowTest.kt rename to arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/FlowTest.kt index 2072dce4e92..17882ad0825 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/FlowTest.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/FlowTest.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.collect diff --git a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/Platform.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/Platform.kt new file mode 100644 index 00000000000..e99153d3b72 --- /dev/null +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/Platform.kt @@ -0,0 +1,9 @@ +package arrow.resilience + +import arrow.resilience.common.Platform +import arrow.resilience.common.platform + +fun stackSafeIteration(): Int = when (platform) { + Platform.JVM -> 20_000 + else -> 1_000 +} diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/SagaSpec.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt similarity index 98% rename from arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/SagaSpec.kt rename to arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt index 8faeb6f9619..ffdbdface4e 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/SagaSpec.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt @@ -1,7 +1,9 @@ -package arrow.fx.resilience +package arrow.resilience import arrow.fx.coroutines.parMap import arrow.fx.coroutines.parZip +import arrow.resilience.saga +import arrow.resilience.transact import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/ScheduleTest.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt similarity index 97% rename from arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/ScheduleTest.kt rename to arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt index 871a5b44a56..79b2cde6261 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/commonTest/kotlin/arrow/fx/resilience/ScheduleTest.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt @@ -1,10 +1,13 @@ -package arrow.fx.resilience +package arrow.resilience import arrow.atomic.AtomicLong import arrow.atomic.updateAndGet import arrow.core.Either -import arrow.fx.resilience.Schedule.Decision.Continue -import arrow.fx.resilience.Schedule.Decision.Done +import arrow.resilience.Schedule +import arrow.resilience.Schedule.Decision.Continue +import arrow.resilience.Schedule.Decision.Done +import arrow.resilience.retry +import arrow.resilience.retryOrElseEither import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlin.math.pow import kotlin.time.Duration.Companion.milliseconds diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/common/platform.kt b/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/common/platform.kt similarity index 59% rename from arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/common/platform.kt rename to arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/common/platform.kt index ab42775dbe6..aae1df5bd01 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/common/platform.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/common/platform.kt @@ -1,3 +1,3 @@ -package arrow.fx.resilience.common +package arrow.resilience.common public actual val platform: Platform = Platform.JS diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt similarity index 89% rename from arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/timeInMillis.kt rename to arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt index 4618c945fbb..b403d12f625 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jsMain/kotlin/arrow/fx/resilience/timeInMillis.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience @Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") public actual fun timeInMillis(): Long { diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/common/platform.kt b/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/common/platform.kt similarity index 60% rename from arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/common/platform.kt rename to arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/common/platform.kt index 805548ad8e6..3a0ce97e86b 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/common/platform.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/common/platform.kt @@ -1,3 +1,3 @@ -package arrow.fx.resilience.common +package arrow.resilience.common public actual val platform: Platform = Platform.JVM diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt similarity index 87% rename from arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/timeInMillis.kt rename to arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt index 3083b7bdec7..982c8937109 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jvmMain/kotlin/arrow/fx/resilience/timeInMillis.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience @Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") public actual fun timeInMillis(): Long = diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt similarity index 92% rename from arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt rename to arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt index f9f5bb45ce4..ba252825035 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt @@ -1,8 +1,8 @@ // This file was automatically generated from CircuitBreaker.kt by Knit tool. Do not edit. -package arrow.fx.resilience.examples.exampleCircuitbreaker01 +package arrow.resilience.examples.exampleCircuitbreaker01 import arrow.core.Either -import arrow.fx.resilience.CircuitBreaker +import arrow.resilience.CircuitBreaker import kotlin.time.Duration.Companion.seconds import kotlin.time.ExperimentalTime import kotlinx.coroutines.delay diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt similarity index 89% rename from arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt rename to arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt index 63f3fc184d3..583dc2283af 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt @@ -1,10 +1,10 @@ // This file was automatically generated from CircuitBreaker.kt by Knit tool. Do not edit. -package arrow.fx.resilience.examples.exampleCircuitbreaker02 +package arrow.resilience.examples.exampleCircuitbreaker02 import arrow.core.Either -import arrow.fx.resilience.CircuitBreaker -import arrow.fx.resilience.Schedule -import arrow.fx.resilience.retry +import arrow.resilience.CircuitBreaker +import arrow.resilience.Schedule +import arrow.resilience.retry import kotlin.time.Duration.Companion.seconds import kotlin.time.ExperimentalTime import kotlinx.coroutines.delay diff --git a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt similarity index 82% rename from arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt rename to arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt index 052f9642e78..fc26a85d562 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt @@ -1,8 +1,8 @@ // This file was automatically generated from flow.kt by Knit tool. Do not edit. -package arrow.fx.resilience.examples.exampleFlow01 +package arrow.resilience.examples.exampleFlow01 import kotlinx.coroutines.flow.* -import arrow.fx.resilience.* +import arrow.resilience.* suspend fun main(): Unit { var counter = 0 diff --git a/arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/common/platform.kt b/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/common/platform.kt similarity index 61% rename from arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/common/platform.kt rename to arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/common/platform.kt index f033f095fbf..af7bc51625a 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/common/platform.kt +++ b/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/common/platform.kt @@ -1,3 +1,3 @@ -package arrow.fx.resilience.common +package arrow.resilience.common public actual val platform: Platform = Platform.Native diff --git a/arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt similarity index 88% rename from arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/timeInMillis.kt rename to arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt index 44cc9204b03..d7e046c326a 100644 --- a/arrow-libs/fx/arrow-fx-resilience/src/nativeMain/kotlin/arrow/fx/resilience/timeInMillis.kt +++ b/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt @@ -1,4 +1,4 @@ -package arrow.fx.resilience +package arrow.resilience import kotlin.system.getTimeMillis diff --git a/settings.gradle.kts b/settings.gradle.kts index e2c308e95f1..517495913f2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -49,8 +49,8 @@ project(":arrow-fx-coroutines").projectDir = file("arrow-libs/fx/arrow-fx-corout include("arrow-fx-stm") project(":arrow-fx-stm").projectDir = file("arrow-libs/fx/arrow-fx-stm") -include("arrow-fx-resilience") -project(":arrow-fx-resilience").projectDir = file("arrow-libs/fx/arrow-fx-resilience") +include("arrow-resilience") +project(":arrow-resilience").projectDir = file("arrow-libs/resilience/arrow-resilience") // OPTICS include("arrow-optics") From ae18fa4f432e6446957e7775531c03052cc012f6 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 11:58:04 +0200 Subject: [PATCH 2/8] Remove unused timeInMillis function --- .../resilience/arrow-resilience/api/arrow-resilience.api | 4 ---- .../src/commonMain/kotlin/arrow/resilience/predef.kt | 4 ---- .../src/jsMain/kotlin/arrow/resilience/timeInMillis.kt | 7 ------- .../src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt | 5 ----- .../src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt | 7 ------- 5 files changed, 27 deletions(-) delete mode 100644 arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt delete mode 100644 arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt delete mode 100644 arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt delete mode 100644 arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt diff --git a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api index cbe4dc0617a..8e24fc548b5 100644 --- a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api +++ b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api @@ -264,10 +264,6 @@ public final class arrow/resilience/ScheduleKt { public static final fun retryOrElseEither-aZo8_V4 (Lkotlin/jvm/functions/Function2;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function3;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public final class arrow/resilience/TimeInMillisKt { - public static final fun timeInMillis ()J -} - public final class arrow/resilience/common/Platform : java/lang/Enum { public static final field JS Larrow/resilience/common/Platform; public static final field JVM Larrow/resilience/common/Platform; diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt deleted file mode 100644 index 547bfda64ef..00000000000 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/predef.kt +++ /dev/null @@ -1,4 +0,0 @@ -package arrow.resilience - -@Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") -public expect fun timeInMillis(): Long diff --git a/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt deleted file mode 100644 index b403d12f625..00000000000 --- a/arrow-libs/resilience/arrow-resilience/src/jsMain/kotlin/arrow/resilience/timeInMillis.kt +++ /dev/null @@ -1,7 +0,0 @@ -package arrow.resilience - -@Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") -public actual fun timeInMillis(): Long { - val x: Number = js("new Date().getTime()") - return x.toLong() -} diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt deleted file mode 100644 index 982c8937109..00000000000 --- a/arrow-libs/resilience/arrow-resilience/src/jvmMain/kotlin/arrow/resilience/timeInMillis.kt +++ /dev/null @@ -1,5 +0,0 @@ -package arrow.resilience - -@Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") -public actual fun timeInMillis(): Long = - System.currentTimeMillis() diff --git a/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt b/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt deleted file mode 100644 index d7e046c326a..00000000000 --- a/arrow-libs/resilience/arrow-resilience/src/nativeMain/kotlin/arrow/resilience/timeInMillis.kt +++ /dev/null @@ -1,7 +0,0 @@ -package arrow.resilience - -import kotlin.system.getTimeMillis - -@Deprecated("This is being removed in Arrow Fx Resilience and kotlin.time.TimeSource is the recommended replacement.") -public actual fun timeInMillis(): Long = - getTimeMillis() From e09c11d8acda1aed57e41bbd4cef39efc3a20a8d Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 12:45:02 +0200 Subject: [PATCH 3/8] Remove deprecated methods for Arrow Resilience --- .../arrow-resilience/api/arrow-resilience.api | 8 - .../kotlin/arrow/resilience/CircuitBreaker.kt | 161 +----------------- .../examples/example-circuitbreaker-01.kt | 2 +- .../examples/example-circuitbreaker-02.kt | 2 +- 4 files changed, 11 insertions(+), 162 deletions(-) diff --git a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api index 8e24fc548b5..feb16186002 100644 --- a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api +++ b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api @@ -14,10 +14,6 @@ public final class arrow/resilience/CircuitBreaker { public final class arrow/resilience/CircuitBreaker$Companion { public final fun invoke-MWqDXGA (JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; public static synthetic fun invoke-MWqDXGA$default (Larrow/resilience/CircuitBreaker$Companion;JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Larrow/resilience/CircuitBreaker; - public final fun of (DLarrow/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun of$default (Larrow/resilience/CircuitBreaker$Companion;DLarrow/resilience/CircuitBreaker$OpeningStrategy;DDLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; - public final fun of-MWqDXGA (JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; - public static synthetic fun of-MWqDXGA$default (Larrow/resilience/CircuitBreaker$Companion;JLarrow/resilience/CircuitBreaker$OpeningStrategy;DJLkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/coroutines/Continuation;ILjava/lang/Object;)Ljava/lang/Object; } public final class arrow/resilience/CircuitBreaker$ExecutionRejected : java/lang/Throwable { @@ -85,19 +81,15 @@ public final class arrow/resilience/CircuitBreaker$State$HalfOpen : arrow/resili public fun equals (Ljava/lang/Object;)Z public fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; public final fun getResetTimeout-UwyO8pc ()J - public final fun getResetTimeoutNanos ()D public fun hashCode ()I public fun toString ()Ljava/lang/String; } public final class arrow/resilience/CircuitBreaker$State$Open : arrow/resilience/CircuitBreaker$State { - public fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;JD)V - public synthetic fun (Larrow/resilience/CircuitBreaker$OpeningStrategy;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V public fun equals (Ljava/lang/Object;)Z public final fun getExpiresAt ()Lkotlin/time/TimeMark; public fun getOpeningStrategy ()Larrow/resilience/CircuitBreaker$OpeningStrategy; public final fun getResetTimeout-UwyO8pc ()J - public final fun getResetTimeoutNanos ()D public final fun getStartedAt ()Lkotlin/time/TimeMark; public fun hashCode ()I public fun toString ()Ljava/lang/String; diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index c3879b57bb5..2e9b0495fab 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -56,7 +56,7 @@ import kotlin.time.TimeSource * @ExperimentalTime * suspend fun main(): Unit { * //sampleStart - * val circuitBreaker = CircuitBreaker.of( + * val circuitBreaker = CircuitBreaker( * resetTimeout = 2.seconds, * openingStrategy = CircuitBreaker.OpeningStrategy.Count(maxFailures = 2), * exponentialBackoffFactor = 1.2, @@ -103,7 +103,7 @@ import kotlin.time.TimeSource * } * * //sampleStart - * val circuitBreaker = CircuitBreaker.of( + * val circuitBreaker = CircuitBreaker( * resetTimeout = 2.seconds, * openingStrategy = CircuitBreaker.OpeningStrategy.Count(maxFailures = 2), * exponentialBackoffFactor = 2.0, // enable exponentialBackoffFactor @@ -423,49 +423,6 @@ private constructor( internal val awaitClose: CompletableDeferred, ) : State() { - @Deprecated( - "Prefer to use resetTimeout with kotlin.time.Duration", - ReplaceWith( - "resetTimeout.toDouble(DurationUnit.NANOSECONDS)", - "kotlin.time.DurationUnit" - ) - ) - public val resetTimeoutNanos: Double - get() = resetTimeout.toDouble(DurationUnit.NANOSECONDS) - - @Deprecated( - "This constructor will be removed in Arrow 2.0", - level = DeprecationLevel.WARNING - ) - public constructor(openingStrategy: OpeningStrategy, startedAt: Long, resetTimeout: Duration) : this( - openingStrategy, - TimeSource.Monotonic.markNow(), - resetTimeout, - CompletableDeferred() - ) - - @Deprecated( - "This constructor will be removed in Arrow 2.0", - level = DeprecationLevel.WARNING - ) - internal constructor( - openingStrategy: OpeningStrategy, - startedAt: Long, - resetTimeoutNanos: Double, - awaitClose: CompletableDeferred, - ) : this(openingStrategy, TimeSource.Monotonic.markNow(), resetTimeoutNanos.nanoseconds, awaitClose) - - @Deprecated( - "This constructor will be removed in Arrow 2.0", - level = DeprecationLevel.WARNING - ) - public constructor(openingStrategy: OpeningStrategy, startedAt: Long, resetTimeoutNanos: Double) : this( - openingStrategy, - TimeSource.Monotonic.markNow(), - resetTimeoutNanos.nanoseconds, - CompletableDeferred() - ) - /** The timestamp in milliseconds since the epoch, specifying when the [Open] state is to transition to [HalfOpen]. * * It is calculated as: @@ -504,28 +461,8 @@ private constructor( internal val awaitClose: CompletableDeferred ) : State() { - @Deprecated( - "Prefer to use resetTimeout with kotlin.time.Duration", - ReplaceWith( - "resetTimeout.toDouble(DurationUnit.NANOSECONDS)", - "kotlin.time.DurationUnit" - ) - ) - public val resetTimeoutNanos: Double - get() = resetTimeout.toDouble(DurationUnit.NANOSECONDS) - public constructor(openingStrategy: OpeningStrategy, resetTimeout: Duration) : this(openingStrategy, resetTimeout, CompletableDeferred()) - @Deprecated( - "This constructor will be removed in Arrow 2.0", - level = DeprecationLevel.WARNING - ) - internal constructor( - openingStrategy: OpeningStrategy, - resetTimeoutNanos: Double, - awaitClose: CompletableDeferred, - ) : this(openingStrategy, resetTimeoutNanos.nanoseconds, awaitClose) - public constructor(openingStrategy: OpeningStrategy, resetTimeoutNanos: Double) : this(openingStrategy, resetTimeoutNanos.nanoseconds, CompletableDeferred()) override fun hashCode(): Int = @@ -546,70 +483,16 @@ private constructor( /** * Attempts to create a [CircuitBreaker]. * - * @param maxFailures is the maximum count for failures before opening the circuit breaker. - * - * @param resetTimeoutNanos is the timeout to wait in the `Open` state before attempting a close of the circuit breaker - * (but without the backoff factor applied) in nanoseconds. - * - * @param exponentialBackoffFactor is a factor to use for resetting the `resetTimeout` when in the `HalfOpen` state, - * in case the attempt to `Close` fails. - * - * @param maxResetTimeoutNanos is the maximum timeout the circuit breaker is allowed to use when applying the `exponentialBackoffFactor`. - * - * @param onRejected is a callback for signaling rejected tasks, - * so every time a task execution is attempted and rejected in [Open] or [HalfOpen] states. - * - * @param onClosed is a callback for signaling transitions to the [CircuitBreaker.State.Closed] state. - * - * @param onHalfOpen is a callback for signaling transitions to [CircuitBreaker.State.HalfOpen]. - * - * @param onOpen is a callback for signaling transitions to [CircuitBreaker.State.Open]. - */ - @Deprecated( - "Prefer the kotlin.time.Duration constructor instead", - ReplaceWith( - "CircuitBreaker(maxFailures, resetTimeoutNanos.nanoseconds, exponentialBackoffFactor, maxResetTimeout, onRejected, onClosed, onHalfOpen, onOpen)", - "import kotlin.time.Duration.Companion.nanoseconds" - ) - ) - public suspend fun of( - resetTimeoutNanos: Double, - openingStrategy: OpeningStrategy, - exponentialBackoffFactor: Double = 1.0, - maxResetTimeoutNanos: Double = Double.POSITIVE_INFINITY, - onRejected: suspend () -> Unit = { }, - onClosed: suspend () -> Unit = { }, - onHalfOpen: suspend () -> Unit = { }, - onOpen: suspend () -> Unit = { } - ): CircuitBreaker = - CircuitBreaker( - state = AtomicRef(Closed(openingStrategy)), - resetTimeoutNanos = resetTimeoutNanos - .takeIf { it > 0 } - .let { requireNotNull(it) { "resetTimeout expected to be greater than 0, but was $resetTimeoutNanos" } }, - exponentialBackoffFactor = exponentialBackoffFactor - .takeIf { it > 0 } - .let { requireNotNull(it) { "exponentialBackoffFactor expected to be greater than 0, but was $exponentialBackoffFactor" } }, - maxResetTimeoutNanos = maxResetTimeoutNanos - .takeIf { it > 0 } - .let { requireNotNull(it) { "maxResetTimeout expected to be greater than 0, but was $maxResetTimeoutNanos" } }, - timeSource = TimeSource.Monotonic, - onRejected = onRejected, - onClosed = onClosed, - onHalfOpen = onHalfOpen, - onOpen = onOpen - ) - - /** - * Attempts to create a [CircuitBreaker]. - * - * @param maxFailures is the maximum count for failures before - * opening the circuit breaker. - * * @param resetTimeout is the timeout to wait in the `Open` state * before attempting a close of the circuit breaker (but without * the backoff factor applied). * + * @param openingStrategy is the strategy that will decide if the + * circuit breaker should open after some failures. + * The available options are: + * - [CircuitBreaker.OpeningStrategy.Count] + * - [CircuitBreaker.OpeningStrategy.SlidingWindow] + * * @param exponentialBackoffFactor is a factor to use for resetting * the `resetTimeout` when in the `HalfOpen` state, in case * the attempt to `Close` fails. @@ -622,39 +505,13 @@ private constructor( * [CircuitBreaker.Open] or [CircuitBreaker.HalfOpen] * states. * - * @param onClosed is a callback for signaling transitions to the [CircuitBreaker.State.Closed] state. + * @param onClosed is a callback for signaling transitions to [CircuitBreaker.State.Closed]. * * @param onHalfOpen is a callback for signaling transitions to [CircuitBreaker.State.HalfOpen]. * * @param onOpen is a callback for signaling transitions to [CircuitBreaker.State.Open]. * */ - @Deprecated( - "Use the non-suspend constructor instead.", - ReplaceWith("CircuitBreaker(maxFailures, resetTimeout, exponentialBackoffFactor, maxResetTimeout, onRejected, onClosed, onHalfOpen, onOpen)") - ) - public suspend fun of( - resetTimeout: Duration, - openingStrategy: OpeningStrategy, - exponentialBackoffFactor: Double = 1.0, - maxResetTimeout: Duration = Duration.INFINITE, - onRejected: suspend () -> Unit = suspend { }, - onClosed: suspend () -> Unit = suspend { }, - onHalfOpen: suspend () -> Unit = suspend { }, - onOpen: suspend () -> Unit = suspend { } - ): CircuitBreaker = - invoke( - resetTimeout, - openingStrategy, - exponentialBackoffFactor, - maxResetTimeout, - TimeSource.Monotonic, - onRejected, - onClosed, - onHalfOpen, - onOpen - ) - public operator fun invoke( resetTimeout: Duration, openingStrategy: OpeningStrategy, diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt index ba252825035..618690892ae 100644 --- a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt @@ -9,7 +9,7 @@ import kotlinx.coroutines.delay @ExperimentalTime suspend fun main(): Unit { - val circuitBreaker = CircuitBreaker.of( + val circuitBreaker = CircuitBreaker( resetTimeout = 2.seconds, openingStrategy = CircuitBreaker.OpeningStrategy.Count(maxFailures = 2), exponentialBackoffFactor = 1.2, diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt index 583dc2283af..38ee2d3bb57 100644 --- a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt @@ -17,7 +17,7 @@ suspend fun main(): Unit { } //sampleStart - val circuitBreaker = CircuitBreaker.of( + val circuitBreaker = CircuitBreaker( resetTimeout = 2.seconds, openingStrategy = CircuitBreaker.OpeningStrategy.Count(maxFailures = 2), exponentialBackoffFactor = 2.0, // enable exponentialBackoffFactor From bf1c41517fe7b23debf0e1105d27f5a73d7b09c3 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 12:55:01 +0200 Subject: [PATCH 4/8] Change resetTimeout and maxResetTimeout types to Duration --- .../arrow-resilience/api/arrow-resilience.api | 2 +- .../kotlin/arrow/resilience/CircuitBreaker.kt | 33 ++++++++----------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api index feb16186002..602e985eb50 100644 --- a/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api +++ b/arrow-libs/resilience/arrow-resilience/api/arrow-resilience.api @@ -1,6 +1,6 @@ public final class arrow/resilience/CircuitBreaker { public static final field Companion Larrow/resilience/CircuitBreaker$Companion; - public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;DDDLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/util/concurrent/atomic/AtomicReference;JDJLkotlin/time/TimeSource;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun awaitClose (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public final fun doOnClosed (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; public final fun doOnHalfOpen (Lkotlin/jvm/functions/Function1;)Larrow/resilience/CircuitBreaker; diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index 2e9b0495fab..10fee77839a 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -136,9 +136,9 @@ import kotlin.time.TimeSource public class CircuitBreaker private constructor( private val state: AtomicRef, - private val resetTimeoutNanos: Double, + private val resetTimeout: Duration, private val exponentialBackoffFactor: Double, - private val maxResetTimeoutNanos: Double, + private val maxResetTimeout: Duration, private val timeSource: TimeSource, private val onRejected: suspend () -> Unit, private val onClosed: suspend () -> Unit, @@ -146,9 +146,6 @@ private constructor( private val onOpen: suspend () -> Unit ) { - private val resetTimeout: Duration = resetTimeoutNanos.nanoseconds - private val maxResetTimeout: Duration = maxResetTimeoutNanos.nanoseconds - /** Returns the current [State], meant for debugging purposes.*/ public suspend fun state(): State = state.get() @@ -297,9 +294,9 @@ private constructor( public fun doOnRejectedTask(callback: suspend () -> Unit): CircuitBreaker = CircuitBreaker( state = state, - resetTimeoutNanos = resetTimeout.toDouble(DurationUnit.NANOSECONDS), + resetTimeout = resetTimeout, exponentialBackoffFactor = exponentialBackoffFactor, - maxResetTimeoutNanos = maxResetTimeout.toDouble(DurationUnit.NANOSECONDS), + maxResetTimeout = maxResetTimeout, onRejected = suspend { onRejected.invoke(); callback.invoke() }, timeSource = timeSource, onClosed = onClosed, @@ -323,9 +320,9 @@ private constructor( public fun doOnClosed(callback: suspend () -> Unit): CircuitBreaker = CircuitBreaker( state = state, - resetTimeoutNanos = resetTimeout.toDouble(DurationUnit.NANOSECONDS), + resetTimeout = resetTimeout, exponentialBackoffFactor = exponentialBackoffFactor, - maxResetTimeoutNanos = maxResetTimeout.toDouble(DurationUnit.NANOSECONDS), + maxResetTimeout = maxResetTimeout, onRejected = onRejected, timeSource = timeSource, onClosed = suspend { onClosed.invoke(); callback.invoke(); }, @@ -349,9 +346,9 @@ private constructor( public fun doOnHalfOpen(callback: suspend () -> Unit): CircuitBreaker = CircuitBreaker( state = state, - resetTimeoutNanos = resetTimeout.toDouble(DurationUnit.NANOSECONDS), + resetTimeout = resetTimeout, exponentialBackoffFactor = exponentialBackoffFactor, - maxResetTimeoutNanos = maxResetTimeout.toDouble(DurationUnit.NANOSECONDS), + maxResetTimeout = maxResetTimeout, timeSource = timeSource, onRejected = onRejected, onClosed = onClosed, @@ -375,9 +372,9 @@ private constructor( public fun doOnOpen(callback: suspend () -> Unit): CircuitBreaker = CircuitBreaker( state = state, - resetTimeoutNanos = resetTimeout.toDouble(DurationUnit.NANOSECONDS), + resetTimeout = resetTimeout, exponentialBackoffFactor = exponentialBackoffFactor, - maxResetTimeoutNanos = maxResetTimeout.toDouble(DurationUnit.NANOSECONDS), + maxResetTimeout = maxResetTimeout, timeSource = timeSource, onRejected = onRejected, onClosed = onClosed, @@ -525,17 +522,15 @@ private constructor( ): CircuitBreaker = CircuitBreaker( state = AtomicRef(Closed(openingStrategy)), - resetTimeoutNanos = resetTimeout + resetTimeout = resetTimeout .takeIf { it.isPositive() && it != Duration.ZERO } - .let { requireNotNull(it) { "resetTimeout expected to be greater than ${Duration.ZERO}, but was $resetTimeout" } } - .toDouble(DurationUnit.NANOSECONDS), + .let { requireNotNull(it) { "resetTimeout expected to be greater than ${Duration.ZERO}, but was $resetTimeout" } }, exponentialBackoffFactor = exponentialBackoffFactor .takeIf { it > 0 } .let { requireNotNull(it) { "exponentialBackoffFactor expected to be greater than 0, but was $exponentialBackoffFactor" } }, - maxResetTimeoutNanos = maxResetTimeout + maxResetTimeout = maxResetTimeout .takeIf { it.isPositive() && it != Duration.ZERO } - .let { requireNotNull(it) { "maxResetTimeout expected to be greater than ${Duration.ZERO}, but was $maxResetTimeout" } } - .toDouble(DurationUnit.NANOSECONDS), + .let { requireNotNull(it) { "maxResetTimeout expected to be greater than ${Duration.ZERO}, but was $maxResetTimeout" } }, timeSource = timeSource, onRejected = onRejected, onClosed = onClosed, From 9a251a4f13bce0484cc20bcc5f6d70b38d6a6c24 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 13:14:49 +0200 Subject: [PATCH 5/8] Update CircuitBreaker documentation --- .../src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index 10fee77839a..c0746ccf038 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -399,7 +399,7 @@ private constructor( * - A successful request will reset the failure counter to zero * - When the failure counter reaches the [maxFailures] threshold, the breaker is tripped into the [Open] state * - * @param failures is the current failures count + * @param openingStrategy is the strategy that will decide if the circuit breaker should open after some failures. */ public class Closed(public override val openingStrategy: OpeningStrategy) : State() @@ -408,6 +408,8 @@ private constructor( * - All requests short-circuit/fail-fast with [ExecutionRejected] * - If a request is made after the configured [resetTimeout] passes, the [CircuitBreaker] is tripped into the a [HalfOpen] state, allowing one request to go through as a test. * + * @param openingStrategy is the strategy that will decide if the circuit breaker should open after some failures. + * * @param startedAt is the [TimeMark] when the transition to [Open] happened. * * @param resetTimeout is the current `resetTimeout` that is applied to this [Open] state, to be multiplied by the From e19525b4c7f1727ccf9b24a7ffc1ccada905ceaf Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 13:23:47 +0200 Subject: [PATCH 6/8] Reorganize imports --- .../kotlin/arrow/resilience/CircuitBreaker.kt | 3 +-- .../src/commonMain/kotlin/arrow/resilience/Saga.kt | 2 +- .../commonMain/kotlin/arrow/resilience/Schedule.kt | 5 +++-- .../src/commonMain/kotlin/arrow/resilience/flow.kt | 2 +- .../kotlin/arrow/resilience/CircuitBreakerTest.kt | 2 -- .../commonTest/kotlin/arrow/resilience/SagaSpec.kt | 2 -- .../kotlin/arrow/resilience/ScheduleTest.kt | 11 ++++------- .../kotlin/examples/example-circuitbreaker-01.kt | 2 +- .../kotlin/examples/example-circuitbreaker-02.kt | 2 +- .../src/jvmTest/kotlin/examples/example-flow-01.kt | 2 +- 10 files changed, 13 insertions(+), 20 deletions(-) diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index c0746ccf038..18d2b478d61 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -14,7 +14,6 @@ import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.withContext import kotlin.time.Duration import kotlin.time.Duration.Companion.nanoseconds -import kotlin.time.DurationUnit import kotlin.time.ExperimentalTime import kotlin.time.TimeMark import kotlin.time.TimeSource @@ -409,7 +408,7 @@ private constructor( * - If a request is made after the configured [resetTimeout] passes, the [CircuitBreaker] is tripped into the a [HalfOpen] state, allowing one request to go through as a test. * * @param openingStrategy is the strategy that will decide if the circuit breaker should open after some failures. - * + * * @param startedAt is the [TimeMark] when the transition to [Open] happened. * * @param resetTimeout is the current `resetTimeout` that is applied to this [Open] state, to be multiplied by the diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt index f00a3251b70..9ebda60fe2a 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Saga.kt @@ -3,9 +3,9 @@ package arrow.resilience import arrow.core.continuations.AtomicRef import arrow.core.continuations.updateAndGet import arrow.core.nonFatalOrThrow -import kotlin.coroutines.cancellation.CancellationException import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.withContext +import kotlin.coroutines.cancellation.CancellationException /** diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt index 753c9a2a9dd..d3972ddfa2c 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/Schedule.kt @@ -10,18 +10,19 @@ import arrow.core.nonFatalOrThrow import arrow.core.right import arrow.core.some import arrow.resilience.Schedule.Companion.identity +import arrow.resilience.Schedule.Decision import arrow.resilience.Schedule.Decision.Continue import arrow.resilience.Schedule.Decision.Done +import kotlinx.coroutines.currentCoroutineContext import kotlinx.coroutines.delay import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.flow.retry import kotlin.jvm.JvmInline import kotlin.math.pow import kotlin.random.Random import kotlin.time.Duration import kotlin.time.Duration.Companion.ZERO import kotlin.time.Duration.Companion.nanoseconds -import kotlinx.coroutines.currentCoroutineContext -import kotlinx.coroutines.flow.retry public typealias ScheduleStep = suspend (Input) -> Schedule.Decision diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt index 88f3b91f336..b12c929cc4f 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt @@ -1,9 +1,9 @@ package arrow.resilience -import kotlin.time.Duration.Companion.ZERO import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.retryWhen +import kotlin.time.Duration.Companion.ZERO /** * Retries collection of the given flow when an exception occurs in the upstream flow based on a decision by the [schedule]. diff --git a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt index f1979944846..4a2125b058a 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/CircuitBreakerTest.kt @@ -1,10 +1,8 @@ package arrow.resilience import arrow.core.Either -import arrow.resilience.CircuitBreaker import arrow.resilience.CircuitBreaker.OpeningStrategy import arrow.resilience.CircuitBreaker.OpeningStrategy.SlidingWindow -import arrow.resilience.Schedule import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt index ffdbdface4e..63b25e7c307 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/SagaSpec.kt @@ -2,8 +2,6 @@ package arrow.resilience import arrow.fx.coroutines.parMap import arrow.fx.coroutines.parZip -import arrow.resilience.saga -import arrow.resilience.transact import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi diff --git a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt index 79b2cde6261..10d0276ae17 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonTest/kotlin/arrow/resilience/ScheduleTest.kt @@ -3,19 +3,13 @@ package arrow.resilience import arrow.atomic.AtomicLong import arrow.atomic.updateAndGet import arrow.core.Either -import arrow.resilience.Schedule import arrow.resilience.Schedule.Decision.Continue import arrow.resilience.Schedule.Decision.Done -import arrow.resilience.retry -import arrow.resilience.retryOrElseEither import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlin.math.pow -import kotlin.time.Duration.Companion.milliseconds -import kotlin.time.Duration.Companion.seconds -import kotlin.time.ExperimentalTime import kotlinx.coroutines.test.TestResult import kotlinx.coroutines.test.runTest import kotlinx.coroutines.withTimeout +import kotlin.math.pow import kotlin.test.Test import kotlin.test.assertContentEquals import kotlin.test.assertEquals @@ -23,6 +17,9 @@ import kotlin.test.assertTrue import kotlin.test.fail import kotlin.time.Duration import kotlin.time.Duration.Companion.ZERO +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds +import kotlin.time.ExperimentalTime internal data class SideEffect(var counter: Int = 0) { fun increment() { diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt index 618690892ae..0f646f65684 100644 --- a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-01.kt @@ -3,9 +3,9 @@ package arrow.resilience.examples.exampleCircuitbreaker01 import arrow.core.Either import arrow.resilience.CircuitBreaker +import kotlinx.coroutines.delay import kotlin.time.Duration.Companion.seconds import kotlin.time.ExperimentalTime -import kotlinx.coroutines.delay @ExperimentalTime suspend fun main(): Unit { diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt index 38ee2d3bb57..9aaace53da3 100644 --- a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-circuitbreaker-02.kt @@ -5,9 +5,9 @@ import arrow.core.Either import arrow.resilience.CircuitBreaker import arrow.resilience.Schedule import arrow.resilience.retry +import kotlinx.coroutines.delay import kotlin.time.Duration.Companion.seconds import kotlin.time.ExperimentalTime -import kotlinx.coroutines.delay @ExperimentalTime suspend fun main(): Unit { diff --git a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt index fc26a85d562..ceee64bdd08 100644 --- a/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt +++ b/arrow-libs/resilience/arrow-resilience/src/jvmTest/kotlin/examples/example-flow-01.kt @@ -1,8 +1,8 @@ // This file was automatically generated from flow.kt by Knit tool. Do not edit. package arrow.resilience.examples.exampleFlow01 -import kotlinx.coroutines.flow.* import arrow.resilience.* +import kotlinx.coroutines.flow.* suspend fun main(): Unit { var counter = 0 From b528b19fd2b5fd22a887283f17439b81fd96efb7 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 13:40:29 +0200 Subject: [PATCH 7/8] Update knit files --- .../src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt | 4 ++-- .../src/commonMain/kotlin/arrow/resilience/flow.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt index 18d2b478d61..e56372e3285 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/CircuitBreaker.kt @@ -48,9 +48,9 @@ import kotlin.time.TimeSource * ```kotlin * import arrow.core.Either * import arrow.resilience.CircuitBreaker + * import kotlinx.coroutines.delay * import kotlin.time.Duration.Companion.seconds * import kotlin.time.ExperimentalTime - * import kotlinx.coroutines.delay * * @ExperimentalTime * suspend fun main(): Unit { @@ -90,9 +90,9 @@ import kotlin.time.TimeSource * import arrow.resilience.CircuitBreaker * import arrow.resilience.Schedule * import arrow.resilience.retry + * import kotlinx.coroutines.delay * import kotlin.time.Duration.Companion.seconds * import kotlin.time.ExperimentalTime - * import kotlinx.coroutines.delay * * @ExperimentalTime * suspend fun main(): Unit { diff --git a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt index b12c929cc4f..b9357b26318 100644 --- a/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt +++ b/arrow-libs/resilience/arrow-resilience/src/commonMain/kotlin/arrow/resilience/flow.kt @@ -13,8 +13,8 @@ import kotlin.time.Duration.Companion.ZERO * @see [Schedule] for how to build a schedule. * * ```kotlin - * import kotlinx.coroutines.flow.* * import arrow.resilience.* + * import kotlinx.coroutines.flow.* * * suspend fun main(): Unit { * var counter = 0 From d27cfd46a8f71d1e0c7268a30b2a1dd70710a526 Mon Sep 17 00:00:00 2001 From: franciscodr Date: Thu, 30 Mar 2023 13:53:29 +0200 Subject: [PATCH 8/8] Update knit.properties file --- arrow-libs/resilience/arrow-resilience/knit.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arrow-libs/resilience/arrow-resilience/knit.properties b/arrow-libs/resilience/arrow-resilience/knit.properties index 8c1d10b76c9..15169a6c684 100644 --- a/arrow-libs/resilience/arrow-resilience/knit.properties +++ b/arrow-libs/resilience/arrow-resilience/knit.properties @@ -1,5 +1,5 @@ -knit.package=arrow.fx.resilience.examples +knit.package=arrow.resilience.examples knit.dir=src/jvmTest/kotlin/examples/ -test.package=arrow.fx.resilience.examples.test +test.package=arrow.resilience.examples.test test.dir=src/jvmTest/kotlin/examples/autogenerated/ \ No newline at end of file