Skip to content

Commit

Permalink
Support Wasm and remove okio dependency for the sandwich package
Browse files Browse the repository at this point in the history
  • Loading branch information
skydoves committed Jan 29, 2025
1 parent 956c1ba commit 3dd3935
Show file tree
Hide file tree
Showing 11 changed files with 219 additions and 89 deletions.
60 changes: 46 additions & 14 deletions sandwich-ktor/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,7 @@ mavenPublishing {
}

kotlin {
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64(),
macosArm64(),
macosX64(),
).forEach {
it.binaries.framework {
baseName = "common"
}
}
androidTarget { publishLibraryVariants("release") }

jvm {
libs.versions.jvmTarget.get().toInt()
Expand All @@ -53,11 +43,53 @@ kotlin {
}
}

androidTarget {
publishLibraryVariants("release")
wasmJs {
browser {
testTask {
enabled = false
}
}
nodejs {
testTask {
enabled = false
}
}
binaries.library()
}

applyDefaultHierarchyTemplate()
iosX64()
iosArm64()
iosSimulatorArm64()

macosX64()
macosArm64()

@Suppress("OPT_IN_USAGE")
applyHierarchyTemplate {
common {
group("jvm") {
withAndroidTarget()
withJvm()
}
group("skia") {
group("darwin") {
group("apple") {
group("ios") {
withIosX64()
withIosArm64()
withIosSimulatorArm64()
}
group("macos") {
withMacosX64()
withMacosArm64()
}
}
withJs()
withWasmJs()
}
}
}
}

sourceSets {
all {
Expand Down
92 changes: 46 additions & 46 deletions sandwich-ktorfit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,62 @@ mavenPublishing {

kotlin {
jvmToolchain(libs.versions.jvmTarget.get().toInt())

jvm {
libs.versions.jvmTarget.get().toInt()
compilations.all {
kotlinOptions.jvmTarget = libs.versions.jvmTarget.get()
}
withJava()
}

wasmJs {
browser {
testTask {
enabled = false
}
}
nodejs {
testTask {
enabled = false
}
}
binaries.library()
}

iosX64()
iosArm64()
iosSimulatorArm64()
macosArm64()

macosX64()
macosArm64()

@Suppress("OPT_IN_USAGE")
applyHierarchyTemplate {
common {
group("jvm") {
withAndroidTarget()
withJvm()
}
group("skia") {
group("darwin") {
group("apple") {
group("ios") {
withIosX64()
withIosArm64()
withIosSimulatorArm64()
}
group("macos") {
withMacosX64()
withMacosArm64()
}
}
withJs()
withWasmJs()
}
}
}
}

sourceSets {
all {
Expand All @@ -57,51 +102,6 @@ kotlin {
implementation(libs.coroutines)
}
}

val commonTest by getting {
dependencies {
}
}

val jvmMain by getting
val jvmTest by getting

val appleMain by creating {
dependsOn(commonMain)
}
val appleTest by creating {
dependsOn(commonTest)
}
val macosArm64Main by getting {
dependsOn(appleMain)
}
val macosX64Main by getting {
dependsOn(appleMain)
}
val iosSimulatorArm64Main by getting {
dependsOn(appleMain)
}
val iosArm64Main by getting {
dependsOn(appleMain)
}
val iosX64Main by getting {
dependsOn(appleMain)
}
val iosArm64Test by getting {
dependsOn(appleTest)
}
val iosX64Test by getting {
dependsOn(appleTest)
}
val iosSimulatorArm64Test by getting {
dependsOn(appleTest)
}
val macosX64Test by getting {
dependsOn(appleTest)
}
val macosArm64Test by getting {
dependsOn(appleTest)
}
}

explicitApi()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import okio.Timeout
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.concurrent.TimeUnit

/**
* @author skydoves (Jaewoong Eum)
Expand All @@ -37,7 +38,9 @@ internal abstract class CallDelegate<TIn, TOut>(protected val proxy: Call<TIn>)
override fun request(): Request = proxy.request()
override fun isExecuted() = proxy.isExecuted
override fun isCanceled() = proxy.isCanceled
override fun timeout(): Timeout = SandwichInitializer.sandwichTimeout ?: proxy.timeout()
override fun timeout(): Timeout = SandwichInitializer.sandwichTimeout?.let {
Timeout().timeout(it, TimeUnit.MILLISECONDS)
} ?: proxy.timeout()

abstract fun enqueueImpl(callback: Callback<TOut>)
abstract fun executeImpl(): Response<TOut>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import okio.Timeout
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import java.util.concurrent.TimeUnit

/**
* @author skydoves (Jaewoong Eum)
Expand All @@ -37,7 +38,9 @@ internal abstract class CallDelegate<TIn, TOut>(protected val proxy: Call<TIn>)
override fun request(): Request = proxy.request()
override fun isExecuted() = proxy.isExecuted
override fun isCanceled() = proxy.isCanceled
override fun timeout(): Timeout = SandwichInitializer.sandwichTimeout ?: proxy.timeout()
override fun timeout(): Timeout = SandwichInitializer.sandwichTimeout?.let {
Timeout().timeout(it, TimeUnit.MILLISECONDS)
} ?: proxy.timeout()

abstract fun enqueueImpl(callback: Callback<TOut>)
abstract fun executeImpl(): Response<TOut>
Expand Down
4 changes: 2 additions & 2 deletions sandwich/api/android/sandwich.api
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,12 @@ public final class com/skydoves/sandwich/SandwichInitializer {
public static final fun getSandwichFailureMappers ()Ljava/util/List;
public static final fun getSandwichOperators ()Ljava/util/List;
public final fun getSandwichScope ()Lkotlinx/coroutines/CoroutineScope;
public static final fun getSandwichTimeout ()Lokio/Timeout;
public static final fun getSandwichTimeout ()Ljava/lang/Long;
public static final fun getSuccessCodeRange ()Lkotlin/ranges/IntRange;
public static final fun setSandwichFailureMappers (Ljava/util/List;)V
public static final fun setSandwichOperators (Ljava/util/List;)V
public final fun setSandwichScope (Lkotlinx/coroutines/CoroutineScope;)V
public static final fun setSandwichTimeout (Lokio/Timeout;)V
public static final fun setSandwichTimeout (Ljava/lang/Long;)V
public static final fun setSuccessCodeRange (Lkotlin/ranges/IntRange;)V
}

Expand Down
4 changes: 2 additions & 2 deletions sandwich/api/jvm/sandwich.api
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,12 @@ public final class com/skydoves/sandwich/SandwichInitializer {
public static final fun getSandwichFailureMappers ()Ljava/util/List;
public static final fun getSandwichOperators ()Ljava/util/List;
public final fun getSandwichScope ()Lkotlinx/coroutines/CoroutineScope;
public static final fun getSandwichTimeout ()Lokio/Timeout;
public static final fun getSandwichTimeout ()Ljava/lang/Long;
public static final fun getSuccessCodeRange ()Lkotlin/ranges/IntRange;
public static final fun setSandwichFailureMappers (Ljava/util/List;)V
public static final fun setSandwichOperators (Ljava/util/List;)V
public final fun setSandwichScope (Lkotlinx/coroutines/CoroutineScope;)V
public static final fun setSandwichTimeout (Lokio/Timeout;)V
public static final fun setSandwichTimeout (Ljava/lang/Long;)V
public static final fun setSuccessCodeRange (Lkotlin/ranges/IntRange;)V
}

Expand Down
65 changes: 48 additions & 17 deletions sandwich/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,7 @@ mavenPublishing {
}

kotlin {
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64(),
macosArm64(),
macosX64(),
).forEach {
it.binaries.framework {
baseName = "common"
}
}

androidTarget {
publishLibraryVariants("release")
}
androidTarget { publishLibraryVariants("release") }

jvm {
libs.versions.jvmTarget.get().toInt()
Expand All @@ -57,7 +43,53 @@ kotlin {
}
}

applyDefaultHierarchyTemplate()
wasmJs {
browser {
testTask {
enabled = false
}
}
nodejs {
testTask {
enabled = false
}
}
binaries.library()
}

iosX64()
iosArm64()
iosSimulatorArm64()

macosX64()
macosArm64()

@Suppress("OPT_IN_USAGE")
applyHierarchyTemplate {
common {
group("jvm") {
withAndroidTarget()
withJvm()
}
group("skia") {
group("darwin") {
group("apple") {
group("ios") {
withIosX64()
withIosArm64()
withIosSimulatorArm64()
}
group("macos") {
withMacosX64()
withMacosArm64()
}
}
withJs()
withWasmJs()
}
}
}
}

sourceSets {
all {
Expand All @@ -67,7 +99,6 @@ kotlin {
val commonMain by getting {
dependencies {
implementation(libs.coroutines)
implementation(libs.okio)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,9 @@ package com.skydoves.sandwich

import com.skydoves.sandwich.mappers.SandwichFailureMapper
import com.skydoves.sandwich.operators.SandwichOperator
import com.skydoves.sandwich.platform.platformCoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
import kotlinx.coroutines.SupervisorJob
import okio.Timeout
import kotlin.jvm.JvmStatic
import kotlin.jvm.JvmSynthetic
import kotlin.native.concurrent.ThreadLocal
Expand Down Expand Up @@ -82,17 +80,18 @@ public object SandwichInitializer {
* A [CoroutineScope] for executing and operating the overall Retrofit network requests.
*/
@JvmSynthetic
public var sandwichScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
public var sandwichScope: CoroutineScope =
CoroutineScope(SupervisorJob() + platformCoroutineDispatcher)

/**
* @author skydoves (Jaewoong Eum)
*
* A global [Timeout] for operating the [com.skydoves.sandwich.adapters.ApiResponseCallAdapterFactory].
* A global timeout for operating the [com.skydoves.sandwich.adapters.ApiResponseCallAdapterFactory].
*
* Returns a timeout that spans the entire call: resolving DNS, connecting, writing the request
* body, server processing, and reading the response body. If the call requires redirects or
* retries all must complete within one timeout period.
*/
@JvmStatic
public var sandwichTimeout: Timeout? = null
public var sandwichTimeout: Long? = null
}
Loading

0 comments on commit 3dd3935

Please sign in to comment.