Skip to content

Repository files navigation

Ktor KMP File Caching

Tests Maven Central Version

This project is a Ktor client caching, which is (almost) literally a port of FileStorage but for KMP based on OKIO and kotlinx serialization.

Web targets are using an SQL database from SQLDelight to persist the cache.

Example

private val publicStorageCaching = KtorFileCaching()
HttpClient {
    install(HttpCache) {
        publicStorage(publicStorageCaching)
    }
}

Installation

Kotlin JS/Wasm for browser

// {project}/build.gradle.kts - Browser Js
jsMain.dependencies {
    implementation("io.github.frankois944:ktorfilecaching-jsbrowser:0.9.0")
    implementation(devNpm("copy-webpack-plugin", "9.1.0"))
}

// OR

// {project}/build.gradle.kts - Wasm JS
wasmJsMain.dependencies {
    implementation("io.github.frankois944:ktorfilecaching:0.9.0")
    implementation(devNpm("copy-webpack-plugin", "9.1.0"))
}
  • Update or Create your webpack folder
// {project}/webpack.config.d/sqljs.js
config.resolve = {
    fallback: {
        fs: false,
        path: false,
        crypto: false,
    }
};

const CopyWebpackPlugin = require('copy-webpack-plugin');
config.plugins.push(
    new CopyWebpackPlugin({
        patterns: [
            '../../node_modules/sql.js/dist/sql-wasm.wasm'
        ]
    })

More info on SQLDelight documentation

Kotlin JS for NodeJS

implementation("io.github.frankois944:ktorfilecaching-jsnode:0.9.0")

other platform

implementation("io.github.frankois944:ktorfilecaching:0.9.0")

Platforms

The current supported targets are :

Target Supported
jvm ✅
js Node ✅
js browser ✅
wasmJS ✅
iosX64 ✅
iosArm64 ✅
iosSimulatorArm64 ✅
macosX64 ✅
macosArm64 ✅
watchosArm32 ✅
watchosArm64 ✅
watchosDeviceArm64 ✅
watchosSimulatorArm64 ✅
watchosX64 ✅
tvosArm64 ✅
tvosSimulatorArm64 ✅
tvosX64 ✅
mingwX64 ✅
linuxX64 ✅
linuxArm64 ✅

About

Ktor client File caching for KMP project

Topics

Resources

Stars

43 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages