Skip to content

Commit 1a10f54

Browse files
authored
chore(deps): update to openFeature 0.6 (#221)
feat: update to openFeature 0.6
1 parent 537ede6 commit 1a10f54

File tree

10 files changed

+169
-177
lines changed

10 files changed

+169
-177
lines changed

Confidence/api/Confidence.api

Lines changed: 75 additions & 98 deletions
Large diffs are not rendered by default.

ConfidenceDemoApp/build.gradle.kts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import java.util.Properties
44
plugins {
55
alias(libs.plugins.androidApplication)
66
alias(libs.plugins.kotlinAndroid)
7+
alias(libs.plugins.composeCompiler)
78
}
89

910
val localPropertiesFile = File(rootProject.projectDir, "local.properties")
@@ -55,10 +56,7 @@ android {
5556
buildFeatures {
5657
compose = true
5758
}
58-
composeOptions {
59-
kotlinCompilerExtensionVersion = "1.4.2"
60-
}
61-
packagingOptions {
59+
packaging {
6260
resources {
6361
excludes += "/META-INF/{AL2.0,LGPL2.1}"
6462
}

ConfidenceDemoApp/src/main/java/com/example/confidencedemoapp/MainVm.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:OptIn(ExperimentalTime::class)
2+
13
package com.example.confidencedemoapp
24

35
import android.app.Application
@@ -10,12 +12,11 @@ import androidx.lifecycle.viewModelScope
1012
import com.spotify.confidence.*
1113
import com.spotify.confidence.openfeature.ConfidenceFeatureProvider
1214
import com.spotify.confidence.openfeature.InitialisationStrategy
13-
import dev.openfeature.sdk.*
14-
import kotlinx.coroutines.delay
15-
import kotlinx.coroutines.flow.first
15+
import dev.openfeature.kotlin.sdk.*
1616
import kotlinx.coroutines.launch
1717
import java.util.UUID
18-
import kotlin.system.measureTimeMillis
18+
import kotlin.time.Clock
19+
import kotlin.time.ExperimentalTime
1920

2021
class MainVm(app: Application) : AndroidViewModel(app) {
2122

@@ -66,8 +67,8 @@ class MainVm(app: Application) : AndroidViewModel(app) {
6667
fun refreshUi() {
6768
val client = OpenFeatureAPI.getClient()
6869
Log.d(TAG, "refreshing UI")
69-
val flagMessageKey = "hawkflag.message"
70-
val flagMessageDefault = "default"
70+
val flagMessageKey = "flaggy.str"
71+
val flagMessageDefault = "client side default"
7172

7273
val messageValue = client.getStringValue(flagMessageKey, flagMessageDefault)
7374
val flagColorKey = "hawkflag.color"
@@ -91,7 +92,7 @@ class MainVm(app: Application) : AndroidViewModel(app) {
9192
val visitorId = UUID.randomUUID().toString()
9293
val ctx = mapOf(
9394
"visitor_id" to Value.String(visitorId),
94-
"picture" to Value.String("hej"),
95+
"something_timestamp" to Value.Instant(Clock.System.now()),
9596
"region" to Value.String("eu")
9697
)
9798
viewModelScope.launch {
@@ -133,7 +134,7 @@ private fun Value.friendlyString(): String {
133134
is Value.Integer -> this.integer.toString()
134135
is Value.Double -> this.double.toString()
135136
is Value.Boolean -> this.boolean.toString()
136-
is Value.Date -> this.date.toString()
137+
is Value.Instant -> this.instant.toString()
137138
is Value.Structure -> this.structure.entries.joinToString(
138139
prefix = "{",
139140
postfix = "}"

Provider/api/Provider.api

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
public final class com/spotify/confidence/openfeature/ConfidenceFeatureProvider : dev/openfeature/sdk/FeatureProvider {
1+
public final class com/spotify/confidence/openfeature/ConfidenceFeatureProvider : dev/openfeature/kotlin/sdk/FeatureProvider {
22
public static final field Companion Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider$Companion;
3-
public synthetic fun <init> (Ljava/util/List;Ldev/openfeature/sdk/ProviderMetadata;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Lcom/spotify/confidence/Confidence;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
4-
public fun getBooleanEvaluation (Ljava/lang/String;ZLdev/openfeature/sdk/EvaluationContext;)Ldev/openfeature/sdk/ProviderEvaluation;
5-
public fun getDoubleEvaluation (Ljava/lang/String;DLdev/openfeature/sdk/EvaluationContext;)Ldev/openfeature/sdk/ProviderEvaluation;
3+
public synthetic fun <init> (Ljava/util/List;Ldev/openfeature/kotlin/sdk/ProviderMetadata;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Lcom/spotify/confidence/Confidence;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
4+
public fun getBooleanEvaluation (Ljava/lang/String;ZLdev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
5+
public fun getDoubleEvaluation (Ljava/lang/String;DLdev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
66
public fun getHooks ()Ljava/util/List;
7-
public fun getIntegerEvaluation (Ljava/lang/String;ILdev/openfeature/sdk/EvaluationContext;)Ldev/openfeature/sdk/ProviderEvaluation;
8-
public fun getMetadata ()Ldev/openfeature/sdk/ProviderMetadata;
9-
public fun getObjectEvaluation (Ljava/lang/String;Ldev/openfeature/sdk/Value;Ldev/openfeature/sdk/EvaluationContext;)Ldev/openfeature/sdk/ProviderEvaluation;
10-
public fun getStringEvaluation (Ljava/lang/String;Ljava/lang/String;Ldev/openfeature/sdk/EvaluationContext;)Ldev/openfeature/sdk/ProviderEvaluation;
11-
public fun initialize (Ldev/openfeature/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
7+
public fun getIntegerEvaluation (Ljava/lang/String;ILdev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
8+
public fun getMetadata ()Ldev/openfeature/kotlin/sdk/ProviderMetadata;
9+
public fun getObjectEvaluation (Ljava/lang/String;Ldev/openfeature/kotlin/sdk/Value;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
10+
public fun getStringEvaluation (Ljava/lang/String;Ljava/lang/String;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
11+
public fun initialize (Ldev/openfeature/kotlin/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
1212
public fun observe ()Lkotlinx/coroutines/flow/Flow;
13-
public fun onContextSet (Ldev/openfeature/sdk/EvaluationContext;Ldev/openfeature/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
13+
public fun onContextSet (Ldev/openfeature/kotlin/sdk/EvaluationContext;Ldev/openfeature/kotlin/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
1414
public fun shutdown ()V
15-
public fun track (Ljava/lang/String;Ldev/openfeature/sdk/EvaluationContext;Ldev/openfeature/sdk/TrackingEventDetails;)V
15+
public fun track (Ljava/lang/String;Ldev/openfeature/kotlin/sdk/EvaluationContext;Ldev/openfeature/kotlin/sdk/TrackingEventDetails;)V
1616
}
1717

1818
public final class com/spotify/confidence/openfeature/ConfidenceFeatureProvider$Companion {
19-
public final fun create (Lcom/spotify/confidence/Confidence;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Ljava/util/List;Ldev/openfeature/sdk/ProviderMetadata;)Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider;
20-
public static synthetic fun create$default (Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider$Companion;Lcom/spotify/confidence/Confidence;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Ljava/util/List;Ldev/openfeature/sdk/ProviderMetadata;ILjava/lang/Object;)Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider;
19+
public final fun create (Lcom/spotify/confidence/Confidence;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Ljava/util/List;Ldev/openfeature/kotlin/sdk/ProviderMetadata;)Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider;
20+
public static synthetic fun create$default (Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider$Companion;Lcom/spotify/confidence/Confidence;Lcom/spotify/confidence/openfeature/InitialisationStrategy;Ljava/util/List;Ldev/openfeature/kotlin/sdk/ProviderMetadata;ILjava/lang/Object;)Lcom/spotify/confidence/openfeature/ConfidenceFeatureProvider;
2121
}
2222

2323
public final class com/spotify/confidence/openfeature/ConfidenceFeatureProviderKt {
24-
public static final fun toConfidenceContext (Ldev/openfeature/sdk/EvaluationContext;)Lcom/spotify/confidence/ConfidenceValue$Struct;
24+
public static final fun toConfidenceContext (Ldev/openfeature/kotlin/sdk/EvaluationContext;)Lcom/spotify/confidence/ConfidenceValue$Struct;
2525
}
2626

2727
public abstract interface class com/spotify/confidence/openfeature/InitialisationStrategy {

Provider/src/main/java/com/spotify/confidence/openfeature/ConfidenceFeatureProvider.kt

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@file:OptIn(ExperimentalTime::class)
12

23
package com.spotify.confidence.openfeature
34

@@ -8,15 +9,18 @@ import com.spotify.confidence.ConfidenceError.ParseError
89
import com.spotify.confidence.ConfidenceValue
910
import com.spotify.confidence.Evaluation
1011
import com.spotify.confidence.ResolveReason
11-
import dev.openfeature.sdk.EvaluationContext
12-
import dev.openfeature.sdk.FeatureProvider
13-
import dev.openfeature.sdk.Hook
14-
import dev.openfeature.sdk.ProviderEvaluation
15-
import dev.openfeature.sdk.ProviderMetadata
16-
import dev.openfeature.sdk.Reason
17-
import dev.openfeature.sdk.TrackingEventDetails
18-
import dev.openfeature.sdk.Value
19-
import dev.openfeature.sdk.exceptions.OpenFeatureError
12+
import dev.openfeature.kotlin.sdk.EvaluationContext
13+
import dev.openfeature.kotlin.sdk.FeatureProvider
14+
import dev.openfeature.kotlin.sdk.Hook
15+
import dev.openfeature.kotlin.sdk.ProviderEvaluation
16+
import dev.openfeature.kotlin.sdk.ProviderMetadata
17+
import dev.openfeature.kotlin.sdk.Reason
18+
import dev.openfeature.kotlin.sdk.TrackingEventDetails
19+
import dev.openfeature.kotlin.sdk.Value
20+
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError
21+
import java.util.Date
22+
import kotlin.time.ExperimentalTime
23+
import kotlin.time.Instant
2024

2125
internal const val PROVIDER_ID = "SDK_ID_KOTLIN_CONFIDENCE"
2226

@@ -156,7 +160,6 @@ private fun Number.toConfidenceValue(): ConfidenceValue = when (this) {
156160
internal fun Value.toConfidenceValue(): ConfidenceValue = when (this) {
157161
is Value.Structure -> ConfidenceValue.Struct(structure.mapValues { it.value.toConfidenceValue() })
158162
is Value.Boolean -> ConfidenceValue.Boolean(this.boolean)
159-
is Value.Date -> ConfidenceValue.Timestamp(this.date)
160163
is Value.Double -> ConfidenceValue.Double(this.double)
161164
is Value.Integer -> ConfidenceValue.Integer(this.integer)
162165
is Value.List -> {
@@ -169,18 +172,29 @@ internal fun Value.toConfidenceValue(): ConfidenceValue = when (this) {
169172
}
170173
Value.Null -> ConfidenceValue.Null
171174
is Value.String -> ConfidenceValue.String(this.string)
175+
is Value.Instant -> ConfidenceValue.Timestamp(
176+
Date(this.instant.epochSeconds * 1000 + this.instant.nanosecondsOfSecond / 1_000_000)
177+
)
172178
}
173179

174180
internal fun ConfidenceValue.toValue(): Value = when (this) {
175181
is ConfidenceValue.Boolean -> Value.Boolean(this.boolean)
176-
is ConfidenceValue.Date -> Value.Date(this.date)
177182
is ConfidenceValue.Double -> Value.Double(this.double)
178183
is ConfidenceValue.Integer -> Value.Integer(this.integer)
179184
is ConfidenceValue.List -> Value.List(this.list.map { it.toValue() })
180185
ConfidenceValue.Null -> Value.Null
181186
is ConfidenceValue.String -> Value.String(this.string)
182187
is ConfidenceValue.Struct -> Value.Structure(this.map.mapValues { it.value.toValue() })
183-
is ConfidenceValue.Timestamp -> Value.Date(this.dateTime)
188+
is ConfidenceValue.Timestamp -> Value.Instant(this.dateTime.toKotlinInstant())
189+
is ConfidenceValue.Date -> Value.Instant(this.date.toKotlinInstant())
190+
}
191+
192+
private fun Date.toKotlinInstant(): Instant {
193+
val epochSeconds = time / 1000
194+
195+
return Instant.fromEpochSeconds(
196+
epochSeconds = epochSeconds
197+
)
184198
}
185199

186200
private fun <T> Evaluation<T>.toProviderEvaluation() = ProviderEvaluation(
@@ -202,9 +216,9 @@ private fun ResolveReason.toOFReason(): Reason = when (this) {
202216

203217
private fun ErrorCode?.toOFErrorCode() = when (this) {
204218
null -> null
205-
ErrorCode.FLAG_NOT_FOUND -> dev.openfeature.sdk.exceptions.ErrorCode.FLAG_NOT_FOUND
206-
ErrorCode.INVALID_CONTEXT -> dev.openfeature.sdk.exceptions.ErrorCode.INVALID_CONTEXT
207-
else -> dev.openfeature.sdk.exceptions.ErrorCode.PROVIDER_NOT_READY
219+
ErrorCode.FLAG_NOT_FOUND -> dev.openfeature.kotlin.sdk.exceptions.ErrorCode.FLAG_NOT_FOUND
220+
ErrorCode.INVALID_CONTEXT -> dev.openfeature.kotlin.sdk.exceptions.ErrorCode.INVALID_CONTEXT
221+
else -> dev.openfeature.kotlin.sdk.exceptions.ErrorCode.PROVIDER_NOT_READY
208222
}
209223

210224
sealed interface InitialisationStrategy {
Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
@file:OptIn(ExperimentalTime::class)
2+
13
package com.spotify.confidence.openfeature
24

35
import com.spotify.confidence.ConfidenceValue
4-
import dev.openfeature.sdk.Value
6+
import dev.openfeature.kotlin.sdk.Value
57
import org.junit.Assert.assertEquals
68
import org.junit.Assert.assertNull
79
import org.junit.Test
10+
import java.util.Date
11+
import kotlin.time.ExperimentalTime
12+
import kotlin.time.Instant
813

914
class ConfidenceValueMappingsTest {
1015

@@ -14,7 +19,7 @@ class ConfidenceValueMappingsTest {
1419
val value = confidenceValue.toValue()
1520
assertEquals("test", value.asString())
1621
assertNull(value.asInteger())
17-
assertNull(value.asDate())
22+
assertNull(value.asInstant())
1823
assertNull(value.asBoolean())
1924
assertNull(value.asStructure())
2025
}
@@ -26,7 +31,7 @@ class ConfidenceValueMappingsTest {
2631
assertEquals(1.23, value.asDouble()!!, 0.001)
2732
assertNull(value.asString())
2833
assertNull(value.asInteger())
29-
assertNull(value.asDate())
34+
assertNull(value.asInstant())
3035
assertNull(value.asBoolean())
3136
assertNull(value.asStructure())
3237
}
@@ -38,7 +43,7 @@ class ConfidenceValueMappingsTest {
3843
assertEquals(true, value.asBoolean())
3944
assertNull(value.asString())
4045
assertNull(value.asDouble())
41-
assertNull(value.asDate())
46+
assertNull(value.asInstant())
4247
assertNull(value.asInteger())
4348
assertNull(value.asStructure())
4449
}
@@ -50,7 +55,7 @@ class ConfidenceValueMappingsTest {
5055
assertEquals(42, value.asInteger())
5156
assertNull(value.asString())
5257
assertNull(value.asDouble())
53-
assertNull(value.asDate())
58+
assertNull(value.asInstant())
5459
assertNull(value.asBoolean())
5560
assertNull(value.asStructure())
5661
}
@@ -59,10 +64,10 @@ class ConfidenceValueMappingsTest {
5964
fun confidenceStructToValueStructure() {
6065
val confidenceValue = ConfidenceValue.Struct(mapOf("key" to ConfidenceValue.String("value")))
6166
val value = confidenceValue.toValue()
62-
assertEquals(mapOf("key" to dev.openfeature.sdk.Value.String("value")), value.asStructure())
67+
assertEquals(mapOf("key" to Value.String("value")), value.asStructure())
6368
assertNull(value.asString())
6469
assertNull(value.asDouble())
65-
assertNull(value.asDate())
70+
assertNull(value.asInstant())
6671
assertNull(value.asBoolean())
6772
assertNull(value.asList())
6873
}
@@ -71,33 +76,20 @@ class ConfidenceValueMappingsTest {
7176
fun confidenceListToValueList() {
7277
val confidenceValue = ConfidenceValue.List(listOf(ConfidenceValue.String("item")))
7378
val value = confidenceValue.toValue()
74-
assertEquals(listOf(dev.openfeature.sdk.Value.String("item")), value.asList())
79+
assertEquals(listOf(Value.String("item")), value.asList())
7580
assertNull(value.asString())
7681
assertNull(value.asDouble())
77-
assertNull(value.asDate())
82+
assertNull(value.asInstant())
7883
assertNull(value.asBoolean())
7984
assertNull(value.asStructure())
8085
}
8186

8287
@Test
83-
fun confidenceDateToValueDate() {
88+
fun confidenceTimestampToValueInstant() {
8489
val date = java.util.Date()
85-
val confidenceValue = ConfidenceValue.Date(date)
90+
val confidenceValue = ConfidenceValue.Timestamp(date)
8691
val value = confidenceValue.toValue()
87-
assertEquals(date, value.asDate())
88-
assertNull(value.asString())
89-
assertNull(value.asDouble())
90-
assertNull(value.asBoolean())
91-
assertNull(value.asInteger())
92-
assertNull(value.asStructure())
93-
}
94-
95-
@Test
96-
fun confidenceTimestampToValueTimestamp() {
97-
val timestamp = java.util.Date()
98-
val confidenceValue = ConfidenceValue.Timestamp(timestamp)
99-
val value = confidenceValue.toValue()
100-
assertEquals(timestamp.time, value.asDate()!!.time)
92+
assertEquals(date.toKotlinInstant(), value.asInstant()!!)
10193
assertNull(value.asString())
10294
assertNull(value.asDouble())
10395
assertNull(value.asBoolean())
@@ -111,4 +103,11 @@ class ConfidenceValueMappingsTest {
111103
val value = confidenceValue.toValue()
112104
assertEquals(Value.Null, value)
113105
}
106+
}
107+
108+
private fun Date.toKotlinInstant(): Instant {
109+
val javaInstant = this.toInstant()
110+
return Instant.fromEpochSeconds(
111+
epochSeconds = javaInstant.epochSecond
112+
)
114113
}

Provider/src/test/java/com/spotify/confidence/openfeature/ProviderIntegrationTest.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ package com.spotify.confidence.openfeature
55
import android.content.Context
66
import android.util.Log
77
import com.spotify.confidence.ConfidenceFactory
8-
import dev.openfeature.sdk.ImmutableContext
9-
import dev.openfeature.sdk.ImmutableStructure
10-
import dev.openfeature.sdk.OpenFeatureAPI
11-
import dev.openfeature.sdk.OpenFeatureStatus
12-
import dev.openfeature.sdk.Reason
13-
import dev.openfeature.sdk.TrackingEventDetails
14-
import dev.openfeature.sdk.Value
15-
import dev.openfeature.sdk.exceptions.ErrorCode
8+
import dev.openfeature.kotlin.sdk.ImmutableContext
9+
import dev.openfeature.kotlin.sdk.ImmutableStructure
10+
import dev.openfeature.kotlin.sdk.OpenFeatureAPI
11+
import dev.openfeature.kotlin.sdk.OpenFeatureStatus
12+
import dev.openfeature.kotlin.sdk.Reason
13+
import dev.openfeature.kotlin.sdk.TrackingEventDetails
14+
import dev.openfeature.kotlin.sdk.Value
15+
import dev.openfeature.kotlin.sdk.exceptions.ErrorCode
1616
import io.mockk.every
1717
import io.mockk.mockkStatic
1818
import io.mockk.unmockkStatic

Provider/src/test/java/com/spotify/confidence/openfeature/ValueMappingsTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.spotify.confidence.openfeature
22

33
import com.spotify.confidence.ConfidenceValue
4-
import dev.openfeature.sdk.Value
4+
import dev.openfeature.kotlin.sdk.Value
55
import org.junit.Assert.assertEquals
66
import org.junit.Test
77

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ plugins {
88
alias(libs.plugins.nexusPublish) apply true
99
alias(libs.plugins.binaryCompatibilityValidation) apply false
1010
alias(libs.plugins.kover) apply true
11+
alias(libs.plugins.composeCompiler) apply false
1112
}
1213

1314
allprojects {

gradle/libs.versions.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
[versions]
22

33
#Tools
4-
binaryCompatibilityValidation = "0.11.0"
4+
binaryCompatibilityValidation = "0.16.3"
55
nexusPublish = "2.0.0"
66
kover = "0.8.2"
77
androidGradlePlugin = "8.9.3"
8-
kotlinAndroid = "1.8.10"
8+
kotlinAndroid = "2.1.0"
9+
composeCompiler = "2.1.0"
910

1011
# Core
1112
core = "1.7.0"
@@ -14,7 +15,7 @@ okHttp = "4.12.0"
1415
kotlinxSerialization = "1.6.0"
1516

1617
# Provider
17-
openFeatureSDK = "0.5.3" # should update to 0.6.2
18+
openFeatureSDK = "0.6.2"
1819

1920
# Sample app
2021
activityCompose = "1.3.1"
@@ -51,7 +52,7 @@ lifecycleRuntime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx
5152
liveData = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "liveData" }
5253
mockWebServer = { group = "com.squareup.okhttp3", name = "mockwebserver", version.ref = "mockWebServer" }
5354
okHttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okHttp" }
54-
openFeatureSDK = { group = "dev.openfeature", name = "android-sdk", version.ref = "openFeatureSDK" }
55+
openFeatureSDK = { group = "dev.openfeature", name = "kotlin-sdk", version.ref = "openFeatureSDK" }
5556
uiTestManifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version.ref = "composeUi" }
5657
mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" }
5758

@@ -64,3 +65,4 @@ ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" }
6465
kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlinxSerialization" }
6566
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
6667
nexusPublish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublish" }
68+
composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "composeCompiler" }

0 commit comments

Comments
 (0)