From 174ac9c1fe3c23e6e29b5c77b1e7ac64a66d2c29 Mon Sep 17 00:00:00 2001 From: mani1232 Date: Fri, 12 Jul 2024 14:24:24 +0200 Subject: [PATCH 01/16] Update deps and migrate from okio to kotlinx.io --- .idea/encodings.xml | 4 -- README.md | 4 +- build.gradle.kts | 12 +++--- gradle/libs.versions.toml | 17 ++++---- gradle/wrapper/gradle-wrapper.properties | 2 +- kstore-file/build.gradle.kts | 13 +++--- .../xxfast/kstore/file/utils/FileSystem.kt | 5 --- .../xxfast/kstore/file/utils/NSFileManager.kt | 30 ------------- .../io/github/xxfast/kstore/file/FileCodec.kt | 28 +++++++------ .../io/github/xxfast/kstore/file/KStore.kt | 2 +- .../kstore/file/extensions/KListStore.kt | 4 +- .../kstore/file/extensions/KVersionedStore.kt | 42 +++++++++---------- .../xxfast/kstore/file/utils/FileSystem.kt | 8 ---- .../xxfast/kstore/file/utils/FileSystem.kt | 5 --- .../xxfast/kstore/file/utils/FileSystem.kt | 6 --- .../xxfast/kstore/file/utils/FileSystem.kt | 5 --- .../xxfast/kstore/file/utils/FileSystem.kt | 5 --- kstore-storage/build.gradle.kts | 4 +- 18 files changed, 62 insertions(+), 134 deletions(-) delete mode 100644 .idea/encodings.xml delete mode 100644 kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt delete mode 100644 kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/NSFileManager.kt delete mode 100644 kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt delete mode 100644 kstore-file/src/desktopMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt delete mode 100644 kstore-file/src/jsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt delete mode 100644 kstore-file/src/linuxMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt delete mode 100644 kstore-file/src/windowsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 15a15b2..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/README.md b/README.md index 458b2cf..cab38f6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Build](https://github.com/xxfast/KStore/actions/workflows/build.yml/badge.svg)](https://github.com/xxfast/KStore/actions/workflows/build.yml) [![Kotlin Alpha](https://kotl.in/badges/alpha.svg)](https://kotlinlang.org/docs/components-stability.html) -[![Kotlin](https://img.shields.io/badge/Kotlin-1.9.21-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.0Beta2-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) [![Maven Central](https://img.shields.io/maven-central/v/io.github.xxfast/kstore?color=blue)](https://search.maven.org/search?q=g:io.github.xxfast) ![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat) @@ -19,7 +19,7 @@ ![badge-jsBrowser](https://img.shields.io/badge/platform-jsBrowser-F8DB5D.svg?style=flat) ![badge-wasmJsBrowser](https://img.shields.io/badge/platform-wasmJsBrowser-F8DB5D.svg?style=flat) -A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serialisation and okio. +A tiny Kotlin multiplatform library that assists in saving and restoring objects to and from disk using kotlinx.coroutines, kotlinx.serialization and kotlinx.io. Inspired by [RxStore](https://github.com/Gridstone/RxStore) ## Features diff --git a/build.gradle.kts b/build.gradle.kts index e91b976..0e25af5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties plugins { - id("org.jetbrains.kotlinx.kover") version "0.6.1" - id("org.jetbrains.dokka") version "1.9.10" + id("org.jetbrains.kotlinx.kover") version "0.8.2" + id("org.jetbrains.dokka") version "1.9.20" } buildscript { @@ -26,7 +26,7 @@ allprojects { } group = "io.github.xxfast" - version = "0.8.0" + version = "0.8.1" apply(plugin = "org.jetbrains.kotlin.plugin.serialization") apply(plugin = "org.jetbrains.kotlinx.kover") @@ -105,6 +105,6 @@ allprojects { } } -koverMerged { - enable() -} +//koverMerged { +// enable() +//} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15588d9..b095235 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,12 +1,12 @@ [versions] agp = "8.0.2" -androidx-test-junit = "1.1.5" +androidx-test-junit = "1.2.1" junit = "4.13.2" -junit-jupiter="5.9.3" -kotlin = "1.9.22" -kotlinx-coroutines = "1.8.0" -kotlinx-serialization = "1.6.2" -okio = "3.9.0" +junit-jupiter="5.10.1" +kotlin = "2.0.20-Beta2" +kotlinx-coroutines = "1.9.0-RC" +kotlinx-serialization = "1.7.1" +kotlinx-io = "0.4.0" turbine = "1.1.0" [libraries] @@ -20,7 +20,6 @@ kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" } kotlin-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinx-serialization" } -kotlinx-serialization-json-okio = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json-okio", version.ref = "kotlinx-serialization" } -okio = { module = "com.squareup.okio:okio", version.ref = "okio" } -okio-nodefilesystem = { module = "com.squareup.okio:okio-nodefilesystem", version.ref = "okio" } +kotlinx-serialization-json-io = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json-io", version.ref = "kotlinx-serialization" } +kotlinx-io = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinx-io" } turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 42defcc..171d876 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/kstore-file/build.gradle.kts b/kstore-file/build.gradle.kts index 77254e9..750eff4 100644 --- a/kstore-file/build.gradle.kts +++ b/kstore-file/build.gradle.kts @@ -1,7 +1,7 @@ plugins { kotlin("multiplatform") id("com.android.library") - id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.13.2" + id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.1" } android { @@ -88,10 +88,10 @@ kotlin { val commonMain by getting { dependencies { implementation(project(":kstore")) - api(libs.okio) + api(libs.kotlinx.io) implementation(libs.kotlinx.coroutines) implementation(libs.kotlinx.serialization.json) - implementation(libs.kotlinx.serialization.json.okio) + implementation(libs.kotlinx.serialization.json.io) } } @@ -112,11 +112,8 @@ kotlin { } val desktopTest by getting - val jsMain by getting { - dependencies { - implementation(libs.okio.nodefilesystem) - } - } + val jsMain by getting + val jsTest by getting val appleMain by creating { diff --git a/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 591f09d..0000000 --- a/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -public actual val FILE_SYSTEM: FileSystem = FileSystem.SYSTEM diff --git a/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/NSFileManager.kt b/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/NSFileManager.kt deleted file mode 100644 index c284a95..0000000 --- a/kstore-file/src/appleMain/kotlin/io/github/xxfast/kstore/file/utils/NSFileManager.kt +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import io.github.xxfast.kstore.utils.ExperimentalKStoreApi -import kotlinx.cinterop.ExperimentalForeignApi -import kotlinx.cinterop.UnsafeNumber -import platform.Foundation.NSCachesDirectory -import platform.Foundation.NSDocumentDirectory -import platform.Foundation.NSFileManager -import platform.Foundation.NSURL -import platform.Foundation.NSUserDomainMask - -@ExperimentalKStoreApi -@OptIn(UnsafeNumber::class, ExperimentalForeignApi::class) -public val NSFileManager.DocumentDirectory: NSURL? get() = URLForDirectory( - directory = NSDocumentDirectory, - appropriateForURL = null, - create = false, - inDomain = NSUserDomainMask, - error = null -) - -@ExperimentalKStoreApi -@OptIn(UnsafeNumber::class, ExperimentalForeignApi::class) -public val NSFileManager.CachesDirectory: NSURL? get() = URLForDirectory( - directory = NSCachesDirectory, - appropriateForURL = null, - create = false, - inDomain = NSUserDomainMask, - error = null -) \ No newline at end of file diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt index cc7bed1..dda7ddc 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt @@ -3,19 +3,17 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.Codec import io.github.xxfast.kstore.DefaultJson -import io.github.xxfast.kstore.file.utils.FILE_SYSTEM +import kotlinx.io.buffered +import kotlinx.io.files.FileNotFoundException +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.serializer -import okio.FileNotFoundException -import okio.Path -import okio.Path.Companion.toPath -import okio.buffer -import okio.use -import kotlinx.serialization.json.okio.decodeFromBufferedSource as decode -import kotlinx.serialization.json.okio.encodeToBufferedSink as encode +import kotlinx.serialization.json.io.decodeFromSource as decode +import kotlinx.serialization.json.io.encodeToSink as encode public inline fun FileCodec( file: Path, @@ -26,18 +24,22 @@ public inline fun FileCodec( serializer = json.serializersModule.serializer(), ) -@OptIn(ExperimentalSerializationApi::class) public class FileCodec( private val file: Path, private val json: Json, private val serializer: KSerializer, ) : Codec { + @OptIn(ExperimentalSerializationApi::class) override suspend fun decode(): T? = - try { json.decode(serializer, FILE_SYSTEM.source(file).buffer()) } - catch (e: FileNotFoundException) { null } + try { + json.decode(serializer, SystemFileSystem.source(file).buffered()) + } catch (e: FileNotFoundException) { + null + } + @OptIn(ExperimentalSerializationApi::class) override suspend fun encode(value: T?) { - if (value != null) FILE_SYSTEM.sink(file).buffer().use { json.encode(serializer, value, it) } - else FILE_SYSTEM.delete(file) + if (value != null) json.encode(serializer, value, SystemFileSystem.sink(file).buffered()) + else SystemFileSystem.delete(file) } } diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt index 80885a8..7c0b5f1 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt @@ -2,9 +2,9 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore +import kotlinx.io.files.Path import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json -import okio.Path /** * Creates a store with [FileCodec] diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt index 4fa3d9c..7353353 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt @@ -2,11 +2,9 @@ package io.github.xxfast.kstore.file.extensions import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.file.storeOf -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.filterNotNull +import kotlinx.io.files.Path import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json -import okio.Path /** * Creates a store that contains a list diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt index 83f6c47..a8caf8a 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt @@ -1,8 +1,11 @@ package io.github.xxfast.kstore.file.extensions -import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.Codec -import io.github.xxfast.kstore.file.utils.FILE_SYSTEM +import io.github.xxfast.kstore.KStore +import kotlinx.io.buffered +import kotlinx.io.files.FileNotFoundException +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable @@ -11,14 +14,8 @@ import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonElement import kotlinx.serialization.serializer -import okio.FileNotFoundException -import okio.Path -import okio.Path.Companion.toPath -import okio.buffer -import okio.use - -import kotlinx.serialization.json.okio.decodeFromBufferedSource as decode -import kotlinx.serialization.json.okio.encodeToBufferedSink as encode +import kotlinx.serialization.json.io.decodeFromSource as decode +import kotlinx.serialization.json.io.encodeToSink as encode /** * Creates a store with a versioned encoder and decoder @@ -39,7 +36,7 @@ public inline fun storeOf( default: T? = null, enableCache: Boolean = true, json: Json = Json { ignoreUnknownKeys = true; encodeDefaults = true }, - versionPath: Path = "$file.version".toPath(), // TODO: Save to file metadata instead + versionPath: Path = Path("$file.version"), // TODO: Save to file metadata instead noinline migration: Migration = DefaultMigration(default), ): KStore { val codec: Codec = VersionedCodec(file, version, json, json.serializersModule.serializer(), migration, versionPath) @@ -52,24 +49,27 @@ public fun DefaultMigration(default: T?): Migration = { _, _ -> default } public typealias Migration = (version: Int?, JsonElement?) -> T? @OptIn(ExperimentalSerializationApi::class) -public class VersionedCodec( +public class VersionedCodec( private val file: Path, private val version: Int = 0, private val json: Json, private val serializer: KSerializer, private val migration: Migration, - private val versionPath: Path = "$file.version".toPath(), // TODO: Save to file metadata instead -): Codec { + private val versionPath: Path = Path("$file.version"), // TODO: Save to file metadata instead +) : Codec { override suspend fun decode(): T? = try { - json.decode(serializer, FILE_SYSTEM.source(file).buffer()) + json.decode(serializer, SystemFileSystem.source(file).buffered()) } catch (e: SerializationException) { val previousVersion: Int = - if (FILE_SYSTEM.exists(versionPath)) json.decode(Int.serializer(), FILE_SYSTEM.source(versionPath).buffer()) + if (SystemFileSystem.exists(versionPath)) json.decode( + Int.serializer(), + SystemFileSystem.source(versionPath).buffered() + ) else 0 - val data: JsonElement = json.decode(FILE_SYSTEM.source(file).buffer()) + val data: JsonElement = json.decode(SystemFileSystem.source(file).buffered()) migration(previousVersion, data) } catch (e: FileNotFoundException) { null @@ -77,11 +77,11 @@ public class VersionedCodec( override suspend fun encode(value: T?) { if (value != null) { - FILE_SYSTEM.sink(versionPath).buffer().use { json.encode(Int.serializer(), version, it) } - FILE_SYSTEM.sink(file).buffer().use { json.encode(serializer, value, it) } + SystemFileSystem.sink(versionPath).buffered().use { json.encode(Int.serializer(), version, it) } + SystemFileSystem.sink(file).buffered().use { json.encode(serializer, value, it) } } else { - FILE_SYSTEM.delete(versionPath) - FILE_SYSTEM.delete(file) + SystemFileSystem.delete(versionPath) + SystemFileSystem.delete(file) } } } diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index f98c3fb..0000000 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,8 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -/*** - * Okio file system for the given platform - */ -public expect val FILE_SYSTEM: FileSystem diff --git a/kstore-file/src/desktopMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/desktopMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 591f09d..0000000 --- a/kstore-file/src/desktopMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -public actual val FILE_SYSTEM: FileSystem = FileSystem.SYSTEM diff --git a/kstore-file/src/jsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/jsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 18be7fb..0000000 --- a/kstore-file/src/jsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem -import okio.NodeJsFileSystem - -public actual val FILE_SYSTEM: FileSystem = NodeJsFileSystem diff --git a/kstore-file/src/linuxMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/linuxMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 591f09d..0000000 --- a/kstore-file/src/linuxMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -public actual val FILE_SYSTEM: FileSystem = FileSystem.SYSTEM diff --git a/kstore-file/src/windowsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/windowsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 591f09d..0000000 --- a/kstore-file/src/windowsMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -public actual val FILE_SYSTEM: FileSystem = FileSystem.SYSTEM diff --git a/kstore-storage/build.gradle.kts b/kstore-storage/build.gradle.kts index 3ececa4..367e8de 100644 --- a/kstore-storage/build.gradle.kts +++ b/kstore-storage/build.gradle.kts @@ -1,10 +1,10 @@ -import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask plugins { kotlin("multiplatform") - id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.13.2" + id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.15.1" } kotlin { From 41f77d486774cc43d25ff1e2ec498ddaeb7faa83 Mon Sep 17 00:00:00 2001 From: mani1232 Date: Fri, 12 Jul 2024 14:33:17 +0200 Subject: [PATCH 02/16] Update example --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cab38f6..4102f42 100644 --- a/README.md +++ b/README.md @@ -56,11 +56,14 @@ Depending on your target platforms, you will need to add platform configurations ## At a glance ```kotlin +import kotlin.io.path.Path +import kotlinx.serialization.Serializable + // Take any serializable model @Serializable data class Pet(val name: String, val age: Int) // Create a store -val store: KStore = storeOf(file = "path/to/my_cats.json".toPath()) +val store: KStore = storeOf(file = Path("path/to/my_cats.json")) // Get, set, update or delete values val mylo: Pet? = store.get() From a420b9edc4d558f5c4d48894dc311187cf54749a Mon Sep 17 00:00:00 2001 From: mani1232 Date: Fri, 12 Jul 2024 21:29:01 +0200 Subject: [PATCH 03/16] Support for other formats --- .../io/github/xxfast/kstore/storage/KStore.kt | 8 ++++---- .../github/xxfast/kstore/storage/StorageCodec.kt | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/KStore.kt b/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/KStore.kt index ca268ff..a5f6b40 100644 --- a/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/KStore.kt +++ b/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/KStore.kt @@ -3,7 +3,7 @@ package io.github.xxfast.kstore.storage import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json +import kotlinx.serialization.StringFormat /** * Creates a store with [StorageCodec] @@ -11,7 +11,7 @@ import kotlinx.serialization.json.Json * @param key key for the record that is managed by this store * @param default returns this value if the record is not found. defaults to null * @param enableCache maintain a cache. If set to false, it always reads from storage - * @param json Serializer to use. defaults to [DefaultJson] + * @param format Serializer to use. defaults to [DefaultJson] * * @return store that contains a value of type [T] */ @@ -19,10 +19,10 @@ public inline fun storeOf( key: String, default: T? = null, enableCache: Boolean = true, - json: Json = DefaultJson, + format: StringFormat = DefaultJson, storage: Storage = localStorage, ): KStore = KStore( default = default, enableCache = enableCache, - codec = StorageCodec(key, json, storage) + codec = StorageCodec(key, format, storage) ) diff --git a/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/StorageCodec.kt b/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/StorageCodec.kt index 4cebac6..650df68 100644 --- a/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/StorageCodec.kt +++ b/kstore-storage/src/commonMain/kotlin/io/github/xxfast/kstore/storage/StorageCodec.kt @@ -4,31 +4,31 @@ import io.github.xxfast.kstore.Codec import io.github.xxfast.kstore.DefaultJson import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json +import kotlinx.serialization.StringFormat import kotlinx.serialization.serializer public inline fun StorageCodec( key: String, - json: Json = DefaultJson, + format: StringFormat = DefaultJson, storage: Storage = localStorage, ): StorageCodec = StorageCodec( key = key, - json = json, - serializer = json.serializersModule.serializer(), + format = format, + serializer = format.serializersModule.serializer(), storage = storage, ) public class StorageCodec( private val key: String, - private val json: Json, + private val format: StringFormat, private val serializer: KSerializer, private val storage: Storage, ) : Codec { override suspend fun encode(value: T?) { - if (value != null) storage[key] = json.encodeToString(serializer, value) + if (value != null) storage[key] = format.encodeToString(serializer, value) else storage.remove(key) } override suspend fun decode(): T? = storage[key] - ?.let { json.decodeFromString(serializer, it) } + ?.let { format.decodeFromString(serializer, it) } } From 6f4e15d055dcf32cb1b3d1467c5e509932326cea Mon Sep 17 00:00:00 2001 From: mani1232 Date: Sat, 13 Jul 2024 03:00:39 +0200 Subject: [PATCH 04/16] Fix support for other formats (temp) --- gradle/libs.versions.toml | 2 +- kstore-file/build.gradle.kts | 1 - .../xxfast/kstore/file/utils/FileSystem.kt | 5 ---- .../io/github/xxfast/kstore/file/FileCodec.kt | 23 ++++++----------- .../io/github/xxfast/kstore/file/KStore.kt | 12 +++++---- .../kstore/file/extensions/KListStore.kt | 5 ++-- .../xxfast/kstore/file/format/KStoreFormat.kt | 23 +++++++++++++++++ .../kstore/file/format/KStoreFormatJson.kt | 25 +++++++++++++++++++ 8 files changed, 67 insertions(+), 29 deletions(-) delete mode 100644 kstore-file/src/androidMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt create mode 100644 kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt create mode 100644 kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b095235..72ce334 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ junit-jupiter="5.10.1" kotlin = "2.0.20-Beta2" kotlinx-coroutines = "1.9.0-RC" kotlinx-serialization = "1.7.1" -kotlinx-io = "0.4.0" +kotlinx-io = "0.5.0" turbine = "1.1.0" [libraries] diff --git a/kstore-file/build.gradle.kts b/kstore-file/build.gradle.kts index 750eff4..4b89d21 100644 --- a/kstore-file/build.gradle.kts +++ b/kstore-file/build.gradle.kts @@ -90,7 +90,6 @@ kotlin { implementation(project(":kstore")) api(libs.kotlinx.io) implementation(libs.kotlinx.coroutines) - implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.serialization.json.io) } } diff --git a/kstore-file/src/androidMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt b/kstore-file/src/androidMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt deleted file mode 100644 index 591f09d..0000000 --- a/kstore-file/src/androidMain/kotlin/io/github/xxfast/kstore/file/utils/FileSystem.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.github.xxfast.kstore.file.utils - -import okio.FileSystem - -public actual val FILE_SYSTEM: FileSystem = FileSystem.SYSTEM diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt index dda7ddc..55937e8 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt @@ -2,44 +2,37 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.Codec -import io.github.xxfast.kstore.DefaultJson +import io.github.xxfast.kstore.file.format.KStoreFormat import kotlinx.io.buffered import kotlinx.io.files.FileNotFoundException import kotlinx.io.files.Path import kotlinx.io.files.SystemFileSystem -import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json -import kotlinx.serialization.serializer -import kotlinx.serialization.json.io.decodeFromSource as decode -import kotlinx.serialization.json.io.encodeToSink as encode public inline fun FileCodec( file: Path, - json: Json = DefaultJson, -): FileCodec = FileCodec( + format: KStoreFormat, + ): FileCodec = FileCodec( file = file, - json = json, - serializer = json.serializersModule.serializer(), + format = format, + serializer = format.serializer, ) public class FileCodec( private val file: Path, - private val json: Json, + private val format: KStoreFormat, private val serializer: KSerializer, ) : Codec { - @OptIn(ExperimentalSerializationApi::class) override suspend fun decode(): T? = try { - json.decode(serializer, SystemFileSystem.source(file).buffered()) + format.decodeFromSource(serializer, SystemFileSystem.source(file).buffered()) } catch (e: FileNotFoundException) { null } - @OptIn(ExperimentalSerializationApi::class) override suspend fun encode(value: T?) { - if (value != null) json.encode(serializer, value, SystemFileSystem.sink(file).buffered()) + if (value != null) format.encodeToSink(serializer, value, SystemFileSystem.sink(file).buffered()) else SystemFileSystem.delete(file) } } diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt index 7c0b5f1..4fcba7a 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt @@ -2,9 +2,11 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore +import io.github.xxfast.kstore.file.format.KStoreFormat +import io.github.xxfast.kstore.file.format.KStoreFormatJson import kotlinx.io.files.Path import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json +import kotlinx.serialization.serializer /** * Creates a store with [FileCodec] @@ -12,7 +14,7 @@ import kotlinx.serialization.json.Json * @param file path to the file that is managed by this store * @param default returns this value if the file is not found. defaults to null * @param enableCache maintain a cache. If set to false, it always reads from disk - * @param json Serializer to use. defaults to [DefaultJson] + * @param format Serializer to use. defaults to [KStoreFormatJson] * * @return store that contains a value of type [T] */ @@ -20,9 +22,9 @@ public inline fun storeOf( file: Path, default: T? = null, enableCache: Boolean = true, - json: Json = DefaultJson, -): KStore = KStore( + format: KStoreFormat = KStoreFormatJson(DefaultJson, DefaultJson.serializersModule.serializer()), + ): KStore = KStore( default = default, enableCache = enableCache, - codec = FileCodec(file, json) + codec = FileCodec(file, format) ) diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt index 7353353..bc341d7 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt @@ -1,10 +1,12 @@ package io.github.xxfast.kstore.file.extensions import io.github.xxfast.kstore.KStore +import io.github.xxfast.kstore.file.format.KStoreFormatJson import io.github.xxfast.kstore.file.storeOf import kotlinx.io.files.Path import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json +import kotlinx.serialization.serializer /** * Creates a store that contains a list @@ -21,5 +23,4 @@ public inline fun listStoreOf( default: List = emptyList(), enableCache: Boolean = true, json: Json = Json { ignoreUnknownKeys = true; encodeDefaults = true }, -): KStore> = - storeOf(file, default, enableCache, json) +): KStore> = storeOf(file, default, enableCache, KStoreFormatJson(json, json.serializersModule.serializer())) \ No newline at end of file diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt new file mode 100644 index 0000000..2807089 --- /dev/null +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt @@ -0,0 +1,23 @@ +package io.github.xxfast.kstore.file.format + +import kotlinx.io.Sink +import kotlinx.io.Source +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationStrategy + +public abstract class KStoreFormat(public val serializer: KSerializer) { + + public abstract fun decodeFromSource( + deserializer: DeserializationStrategy, + source: Source + ): T + + public abstract fun encodeToSink( + serializer: SerializationStrategy, + value: T, + sink: Sink + ) + +} \ No newline at end of file diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt new file mode 100644 index 0000000..d7cee9e --- /dev/null +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt @@ -0,0 +1,25 @@ +package io.github.xxfast.kstore.file.format + +import kotlinx.io.Sink +import kotlinx.io.Source +import kotlinx.serialization.DeserializationStrategy +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationStrategy +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.io.decodeFromSource +import kotlinx.serialization.json.io.encodeToSink + +public class KStoreFormatJson(private val json: Json, serializer: KSerializer) : + KStoreFormat(serializer) { + @OptIn(ExperimentalSerializationApi::class) + override fun decodeFromSource(deserializer: DeserializationStrategy, source: Source): T { + return json.decodeFromSource(deserializer, source) + } + + @OptIn(ExperimentalSerializationApi::class) + override fun encodeToSink(serializer: SerializationStrategy, value: T, sink: Sink) { + json.encodeToSink(serializer, value, sink) + } +} \ No newline at end of file From 3cc2b0ae202260a715bfd2edb2ec36c9504052c7 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 11:50:21 +0530 Subject: [PATCH 05/16] Ignore kotlin metadata --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6a17f24..0b3eb57 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /build/classes/kotlin/jvm/main/ /build/classes/kotlin/jvm/test/ local.properties +/.kotlin # Mac .DS_Store \ No newline at end of file From af50bb0e2a52134709696c12d34e95d552cbf8dc Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 11:51:26 +0530 Subject: [PATCH 06/16] Bump yarn lock for kotlin 2.0 --- kotlin-js-store/yarn.lock | 826 +++++++++++++++++++++++++------------- 1 file changed, 537 insertions(+), 289 deletions(-) diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index e79aa6c..a9e1056 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -12,6 +12,18 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@jridgewell/gen-mapping@^0.3.0": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -26,6 +38,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" @@ -44,7 +61,20 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.20": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -52,11 +82,36 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jsonjoy.com/base64@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== + +"@jsonjoy.com/json-pack@^1.0.3": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz#33ca57ee29d12feef540f2139225597469dec894" + integrity sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg== + dependencies: + "@jsonjoy.com/base64" "^1.1.1" + "@jsonjoy.com/util" "^1.1.2" + hyperdyperid "^1.2.0" + thingies "^1.20.0" + +"@jsonjoy.com/util@^1.1.2", "@jsonjoy.com/util@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.3.0.tgz#e5623885bb5e0c48c1151e4dae422fb03a5887a1" + integrity sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw== + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" @@ -70,14 +125,14 @@ "@types/connect" "*" "@types/node" "*" -"@types/bonjour@^3.5.9": +"@types/bonjour@^3.5.13": version "3.5.13" resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== dependencies: "@types/node" "*" -"@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@^1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== @@ -125,7 +180,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== -"@types/estree@^1.0.0": +"@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -140,7 +195,7 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.13": +"@types/express@*", "@types/express@^4.17.21": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -204,10 +259,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/retry@0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== +"@types/retry@0.12.2": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a" + integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== "@types/send@*": version "0.17.4" @@ -217,14 +272,14 @@ "@types/mime" "^1" "@types/node" "*" -"@types/serve-index@^1.9.1": +"@types/serve-index@^1.9.4": version "1.9.4" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== dependencies: "@types/express" "*" -"@types/serve-static@*", "@types/serve-static@^1.13.10": +"@types/serve-static@*": version "1.15.5" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== @@ -233,24 +288,33 @@ "@types/mime" "*" "@types/node" "*" -"@types/sockjs@^0.3.33": +"@types/serve-static@^1.15.5": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.36": version "0.3.36" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== dependencies: "@types/node" "*" -"@types/ws@^8.5.1": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== +"@types/ws@^8.5.10": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -265,10 +329,10 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== -"@webassemblyjs/helper-buffer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" @@ -284,15 +348,15 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== -"@webassemblyjs/helper-wasm-section@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/ieee754@1.11.6": version "1.11.6" @@ -313,72 +377,72 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== -"@webassemblyjs/wasm-edit@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-opt" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" - "@webassemblyjs/wast-printer" "1.11.6" - -"@webassemblyjs/wasm-gen@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== - dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wasm-opt@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== dependencies: - "@webassemblyjs/ast" "1.11.6" - "@webassemblyjs/helper-buffer" "1.11.6" - "@webassemblyjs/wasm-gen" "1.11.6" - "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" -"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@webassemblyjs/helper-api-error" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/ieee754" "1.11.6" "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" -"@webassemblyjs/wast-printer@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== dependencies: - "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" -"@webpack-cli/configtest@^2.1.0": +"@webpack-cli/configtest@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== -"@webpack-cli/info@^2.0.1": +"@webpack-cli/info@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== -"@webpack-cli/serve@^2.0.3": +"@webpack-cli/serve@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== @@ -393,11 +457,6 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -406,10 +465,10 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn@^8.7.1: version "8.8.2" @@ -475,6 +534,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -482,6 +546,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -538,7 +607,7 @@ body-parser@1.20.2, body-parser@^1.19.0: type-is "~1.6.18" unpipe "1.0.0" -bonjour-service@^1.0.11: +bonjour-service@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== @@ -573,21 +642,28 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.14.5: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== +browserslist@^4.21.10: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +bundle-name@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889" + integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== + dependencies: + run-applescript "^7.0.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -611,10 +687,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001449: - version "1.0.30001469" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" - integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== +caniuse-lite@^1.0.30001646: + version "1.0.30001651" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" + integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== chalk@^4.1.0: version "4.1.2" @@ -639,7 +715,7 @@ chokidar@3.5.3, chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.2" -chokidar@^3.5.3: +chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -789,7 +865,7 @@ cors@~2.8.5: object-assign "^4" vary "^1" -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -827,6 +903,19 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +default-browser-id@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-5.0.0.tgz#a1d98bf960c15082d8a3fa69e83150ccccc3af26" + integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== + +default-browser@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-5.2.1.tgz#7b7ba61204ff3e425b556869ae6d3e9d9f1712cf" + integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== + dependencies: + bundle-name "^4.1.0" + default-browser-id "^5.0.0" + default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" @@ -834,10 +923,10 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== +define-lazy-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" + integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== depd@2.0.0: version "2.0.0" @@ -886,35 +975,45 @@ dom-serialize@^2.2.1: extend "^3.0.0" void-elements "^2.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.284: - version "1.4.337" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.337.tgz#710168240b2dc5fe5eb5f8e4ef9c16d70aedc0ba" - integrity sha512-W8gdzXG86mVPoc56eM8YA+QiLxaAxJ8cmDjxZgfhLLWVvZQxyA918w5tX2JEWApZta45T1/sYcmFHTsTOUE3nw== +electron-to-chromium@^1.5.4: + version "1.5.7" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.7.tgz#425d2a7f76ecfa564fdca1040d11fb1979851f3c" + integrity sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw== emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -engine.io-parser@~5.0.3: - version "5.0.6" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.6.tgz#7811244af173e157295dec9b2718dfe42a64ef45" - integrity sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw== +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== -engine.io@~6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.4.1.tgz#8056b4526a88e779f9c280d820422d4e3eeaaae5" - integrity sha512-JFYQurD/nbsA5BSPmbaOSLa3tSVj8L6o4srSwXXY3NqE+gGUNmmPTbhn8tjzcCtSqhFgIeqef81ngny8JM25hw== +engine.io@~6.5.2: + version "6.5.5" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.5.tgz#430b80d8840caab91a50e9e23cb551455195fc93" + integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -924,13 +1023,13 @@ engine.io@~6.4.1: cookie "~0.4.1" cors "~2.8.5" debug "~4.3.1" - engine.io-parser "~5.0.3" - ws "~8.11.0" + engine.io-parser "~5.2.1" + ws "~8.17.1" -enhanced-resolve@^5.13.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== +enhanced-resolve@^5.16.0: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -955,6 +1054,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1148,6 +1252,14 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + format-util@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" @@ -1172,11 +1284,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1228,17 +1335,28 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" + +glob@^10.3.7: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^7.1.3, glob@^7.1.7: version "7.2.3" @@ -1252,7 +1370,7 @@ glob@^7.1.3, glob@^7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -1301,7 +1419,7 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-entities@^2.3.2: +html-entities@^2.4.0: version "2.5.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== @@ -1362,6 +1480,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +hyperdyperid@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -1412,10 +1535,10 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +ipaddr.js@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-binary-path@~2.1.0: version "2.1.0" @@ -1431,10 +1554,10 @@ is-core-module@^2.13.0: dependencies: hasown "^2.0.0" -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== is-extglob@^2.1.1: version "2.1.1" @@ -1453,6 +1576,18 @@ is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-network-error@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-network-error/-/is-network-error-1.1.0.tgz#d26a760e3770226d11c169052f266a4803d9c997" + integrity sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1485,12 +1620,12 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== dependencies: - is-docker "^2.0.0" + is-inside-container "^1.0.0" isarray@~1.0.0: version "1.0.0" @@ -1512,6 +1647,15 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -1571,19 +1715,19 @@ karma-sourcemap-loader@0.4.0: dependencies: graceful-fs "^4.2.10" -karma-webpack@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" - integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== +karma-webpack@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" + integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== dependencies: glob "^7.1.3" - minimatch "^3.0.4" + minimatch "^9.0.3" webpack-merge "^4.1.5" -karma@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e" - integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ== +karma@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" + integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== dependencies: "@colors/colors" "1.5.0" body-parser "^1.19.0" @@ -1604,7 +1748,7 @@ karma@6.4.2: qjobs "^1.2.0" range-parser "^1.2.1" rimraf "^3.0.2" - socket.io "^4.4.1" + socket.io "^4.7.2" source-map "^0.6.1" tmp "^0.2.1" ua-parser-js "^0.7.30" @@ -1615,10 +1759,10 @@ kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== +launch-editor@^2.6.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.1.tgz#3bda72af213ec9b46b170e39661916ec66c2f463" + integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -1666,17 +1810,25 @@ log4js@^6.4.1: rfdc "^1.3.0" streamroller "^3.1.5" +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" - integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== +memfs@^4.6.0: + version "4.11.1" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.11.1.tgz#9c9c8e65bf8ac72c0db8d0fbbbe29248cf51d56a" + integrity sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ== dependencies: - fs-monkey "^1.0.4" + "@jsonjoy.com/json-pack" "^1.0.3" + "@jsonjoy.com/util" "^1.3.0" + tree-dump "^1.0.1" + tslib "^2.0.0" merge-descriptors@1.0.1: version "1.0.1" @@ -1747,11 +1899,30 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.3, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -1759,10 +1930,10 @@ mkdirp@^0.5.5: dependencies: minimist "^1.2.6" -mocha@10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" - integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== +mocha@10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.3.0.tgz#0e185c49e6dccf582035c05fa91084a4ff6e3fe9" + integrity sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg== dependencies: ansi-colors "4.1.1" browser-stdout "1.3.1" @@ -1771,13 +1942,12 @@ mocha@10.2.0: diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.2.0" + glob "8.1.0" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" @@ -1809,11 +1979,6 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -nanoid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== - negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -1829,10 +1994,10 @@ node-forge@^1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -1861,7 +2026,7 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-finished@2.4.1: +on-finished@2.4.1, on-finished@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -1894,14 +2059,15 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@^8.0.9: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== +open@^10.0.3: + version "10.1.0" + resolved "https://registry.yarnpkg.com/open/-/open-10.1.0.tgz#a7795e6e5d519abe4286d9937bb24b51122598e1" + integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" + default-browser "^5.2.1" + define-lazy-prop "^3.0.0" + is-inside-container "^1.0.0" + is-wsl "^3.1.0" p-limit@^2.2.0: version "2.3.0" @@ -1931,12 +2097,13 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-retry@^4.5.0: - version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" - integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== +p-retry@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-6.2.0.tgz#8d6df01af298750009691ce2f9b3ad2d5968f3bd" + integrity sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA== dependencies: - "@types/retry" "0.12.0" + "@types/retry" "0.12.2" + is-network-error "^1.0.0" retry "^0.13.1" p-try@^2.0.0: @@ -1944,6 +2111,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -1969,6 +2141,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -1979,6 +2159,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -2132,6 +2317,18 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rimraf@^5.0.5: + version "5.0.10" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c" + integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ== + dependencies: + glob "^10.3.7" + +run-applescript@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" + integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2156,7 +2353,7 @@ schema-utils@^3.1.1: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^3.1.2: +schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -2165,7 +2362,7 @@ schema-utils@^3.1.2: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -2180,7 +2377,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== -selfsigned@^2.1.1: +selfsigned@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== @@ -2292,6 +2489,11 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + socket.io-adapter@~2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz#5de9477c9182fdc171cd8c8364b9a8894ec75d12" @@ -2299,25 +2501,26 @@ socket.io-adapter@~2.5.2: dependencies: ws "~8.11.0" -socket.io-parser@~4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.2.tgz#1dd384019e25b7a3d374877f492ab34f2ad0d206" - integrity sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw== +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socket.io@^4.4.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.6.1.tgz#62ec117e5fce0692fa50498da9347cfb52c3bc70" - integrity sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA== +socket.io@^4.7.2: + version "4.7.5" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== dependencies: accepts "~1.3.4" base64id "~2.0.0" + cors "~2.8.5" debug "~4.3.2" - engine.io "~6.4.1" + engine.io "~6.5.2" socket.io-adapter "~2.5.2" - socket.io-parser "~4.2.1" + socket.io-parser "~4.2.4" sockjs@^0.3.24: version "0.3.24" @@ -2333,12 +2536,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-loader@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" - integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== +source-map-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-5.0.0.tgz#f593a916e1cc54471cfc8851b905c8a845fc7e38" + integrity sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA== dependencies: - abab "^2.0.6" iconv-lite "^0.6.3" source-map-js "^1.0.2" @@ -2397,7 +2599,7 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2406,6 +2608,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -2420,13 +2631,20 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -2461,27 +2679,32 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -terser-webpack-plugin@^5.3.7: - version "5.3.9" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" - integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== +terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== dependencies: - "@jridgewell/trace-mapping" "^0.3.17" + "@jridgewell/trace-mapping" "^0.3.20" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.1" - terser "^5.16.8" + terser "^5.26.0" -terser@^5.16.8: - version "5.24.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" - integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== +terser@^5.26.0: + version "5.31.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" + integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" commander "^2.20.0" source-map-support "~0.5.20" +thingies@^1.20.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-1.21.0.tgz#e80fbe58fd6fdaaab8fad9b67bd0a5c943c445c1" + integrity sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g== + thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" @@ -2506,6 +2729,16 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tree-dump@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.0.2.tgz#c460d5921caeb197bde71d0e9a7b479848c5b8ac" + integrity sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ== + +tslib@^2.0.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -2514,10 +2747,10 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typescript@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" - integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== +typescript@5.4.3: + version "5.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" + integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== ua-parser-js@^0.7.30: version "0.7.34" @@ -2534,13 +2767,13 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.1.2" + picocolors "^1.0.1" uri-js@^4.2.2: version "4.4.1" @@ -2574,10 +2807,10 @@ void-elements@^2.0.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== +watchpack@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -2589,15 +2822,15 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -webpack-cli@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891" - integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w== +webpack-cli@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== dependencies: "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.0" - "@webpack-cli/info" "^2.0.1" - "@webpack-cli/serve" "^2.0.3" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" colorette "^2.0.14" commander "^10.0.1" cross-spawn "^7.0.3" @@ -2608,52 +2841,53 @@ webpack-cli@5.1.0: rechoir "^0.8.0" webpack-merge "^5.7.3" -webpack-dev-middleware@^5.3.1: - version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" - integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== +webpack-dev-middleware@^7.1.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-7.3.0.tgz#5975ea41271083dc5678886b99d4c058382fb311" + integrity sha512-xD2qnNew+F6KwOGZR7kWdbIou/ud7cVqLEXeK1q0nHcNsX/u7ul/fSdlOTX4ntSL5FNFy7ZJJXbf0piF591JYw== dependencies: colorette "^2.0.10" - memfs "^3.4.3" + memfs "^4.6.0" mime-types "^2.1.31" + on-finished "^2.4.1" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@4.15.0: - version "4.15.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz#87ba9006eca53c551607ea0d663f4ae88be7af21" - integrity sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ== - dependencies: - "@types/bonjour" "^3.5.9" - "@types/connect-history-api-fallback" "^1.3.5" - "@types/express" "^4.17.13" - "@types/serve-index" "^1.9.1" - "@types/serve-static" "^1.13.10" - "@types/sockjs" "^0.3.33" - "@types/ws" "^8.5.1" +webpack-dev-server@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz#cb6ea47ff796b9251ec49a94f24a425e12e3c9b8" + integrity sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA== + dependencies: + "@types/bonjour" "^3.5.13" + "@types/connect-history-api-fallback" "^1.5.4" + "@types/express" "^4.17.21" + "@types/serve-index" "^1.9.4" + "@types/serve-static" "^1.15.5" + "@types/sockjs" "^0.3.36" + "@types/ws" "^8.5.10" ansi-html-community "^0.0.8" - bonjour-service "^1.0.11" - chokidar "^3.5.3" + bonjour-service "^1.2.1" + chokidar "^3.6.0" colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^2.0.0" default-gateway "^6.0.3" express "^4.17.3" graceful-fs "^4.2.6" - html-entities "^2.3.2" + html-entities "^2.4.0" http-proxy-middleware "^2.0.3" - ipaddr.js "^2.0.1" - launch-editor "^2.6.0" - open "^8.0.9" - p-retry "^4.5.0" - rimraf "^3.0.2" - schema-utils "^4.0.0" - selfsigned "^2.1.1" + ipaddr.js "^2.1.0" + launch-editor "^2.6.1" + open "^10.0.3" + p-retry "^6.2.0" + rimraf "^5.0.5" + schema-utils "^4.2.0" + selfsigned "^2.4.1" serve-index "^1.9.1" sockjs "^0.3.24" spdy "^4.0.2" - webpack-dev-middleware "^5.3.1" - ws "^8.13.0" + webpack-dev-middleware "^7.1.0" + ws "^8.16.0" webpack-merge@^4.1.5: version "4.2.2" @@ -2675,34 +2909,34 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@5.82.0: - version "5.82.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" - integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== +webpack@5.91.0: + version "5.91.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.0" - "@webassemblyjs/ast" "^1.11.5" - "@webassemblyjs/wasm-edit" "^1.11.5" - "@webassemblyjs/wasm-parser" "^1.11.5" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.13.0" + enhanced-resolve "^5.16.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" + graceful-fs "^4.2.11" json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.2" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.7" - watchpack "^2.4.0" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: @@ -2743,7 +2977,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -2752,21 +2986,35 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== +ws@^8.16.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== ws@~8.11.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" From c0aeccc1e344646a3f79a3f80f6087e5500cd98f Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 11:52:18 +0530 Subject: [PATCH 07/16] Fix kstore file tests --- .../io/github/xxfast/kstore/file/FileCodec.kt | 2 +- .../kstore/file/extensions/KVersionedStore.kt | 4 +-- .../xxfast/kstore/file/FileCodecTests.kt | 33 ++++++++++++------- .../kstore/file/extensions/KListStoreTests.kt | 19 +++++------ .../file/extensions/KVersionedStoreTests.kt | 11 +++---- 5 files changed, 37 insertions(+), 32 deletions(-) diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt index 55937e8..93bb0bd 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt @@ -32,7 +32,7 @@ public class FileCodec( } override suspend fun encode(value: T?) { - if (value != null) format.encodeToSink(serializer, value, SystemFileSystem.sink(file).buffered()) + if (value != null) SystemFileSystem.sink(file).buffered().use { format.encodeToSink(serializer, value, it) } else SystemFileSystem.delete(file) } } diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt index a8caf8a..53c8db8 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt @@ -80,8 +80,8 @@ public class VersionedCodec( SystemFileSystem.sink(versionPath).buffered().use { json.encode(Int.serializer(), version, it) } SystemFileSystem.sink(file).buffered().use { json.encode(serializer, value, it) } } else { - SystemFileSystem.delete(versionPath) - SystemFileSystem.delete(file) + SystemFileSystem.delete(versionPath, mustExist = false) + SystemFileSystem.delete(file, mustExist = false) } } } diff --git a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt index f936d7b..b9ec450 100644 --- a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt +++ b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt @@ -1,31 +1,40 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.DefaultJson -import io.github.xxfast.kstore.file.utils.FILE_SYSTEM +import io.github.xxfast.kstore.file.format.KStoreFormatJson import kotlinx.coroutines.test.runTest +import kotlinx.io.buffered +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem +import kotlinx.io.writeString import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerializationException -import okio.Path.Companion.toPath -import okio.buffer -import okio.use -import kotlin.test.* +import kotlinx.serialization.json.io.decodeFromSource +import kotlinx.serialization.json.io.encodeToSink +import kotlin.test.AfterTest +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertFailsWith -import kotlinx.serialization.json.okio.decodeFromBufferedSource as decode -import kotlinx.serialization.json.okio.encodeToBufferedSink as decode class FileCodecTests { - private val codec: FileCodec = FileCodec(file = FILE_PATH.toPath()) + private val file = Path(FILE_PATH) + + private val codec: FileCodec = FileCodec( + file = file, + format = KStoreFormatJson(DefaultJson, Cat.serializer()), + ) @OptIn(ExperimentalSerializationApi::class) private var stored: Cat? - get() = FILE_SYSTEM.source(FILE_PATH.toPath()).buffer().use { DefaultJson.decode(it) } + get() = SystemFileSystem.source(file).buffered().use { DefaultJson.decodeFromSource(it) } set(value) { - FILE_SYSTEM.sink(FILE_PATH.toPath()).buffer().use { DefaultJson.decode(value, it) } + SystemFileSystem.sink(file).buffered().use { DefaultJson.encodeToSink(value, it) } } @AfterTest fun cleanUp() { - FILE_SYSTEM.delete(FILE_PATH.toPath()) + SystemFileSystem.delete(Path(FILE_PATH)) } @Test @@ -46,7 +55,7 @@ class FileCodecTests { @Test fun testDecodeMalformedFile() = runTest { - FILE_SYSTEM.sink(FILE_PATH.toPath()).buffer().use { it.writeUtf8("💩") } + SystemFileSystem.sink(file).buffered().use { it.writeString("💩") } assertFailsWith { codec.decode() } } } diff --git a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KListStoreTests.kt b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KListStoreTests.kt index 53413de..82a3388 100644 --- a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KListStoreTests.kt +++ b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KListStoreTests.kt @@ -3,6 +3,7 @@ package io.github.xxfast.kstore.file.extensions import app.cash.turbine.test +import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.extensions.get import io.github.xxfast.kstore.extensions.getOrEmpty @@ -14,27 +15,23 @@ import io.github.xxfast.kstore.extensions.updatesOrEmpty import io.github.xxfast.kstore.file.Cat import io.github.xxfast.kstore.file.MYLO import io.github.xxfast.kstore.file.OREO -import io.github.xxfast.kstore.file.utils.FILE_SYSTEM -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest +import kotlinx.io.buffered +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.okio.encodeToBufferedSink -import okio.Path -import okio.Path.Companion.toPath -import okio.buffer -import okio.use +import kotlinx.serialization.json.io.encodeToSink import kotlin.test.AfterTest import kotlin.test.Test import kotlin.test.assertEquals class KListStoreTests { - private val file: Path = "test_lists.json".toPath() + private val file: Path = Path("test_lists.json") private val store: KStore> = listStoreOf(file = file) @AfterTest fun setup() { - FILE_SYSTEM.delete(file) + SystemFileSystem.delete(file, mustExist = false) } @Test @@ -62,7 +59,7 @@ class KListStoreTests { @Test fun testReadPreviouslyStoredList() = runTest { - FILE_SYSTEM.sink(file).buffer().use { Json.encodeToBufferedSink(listOf(OREO) , it) } + SystemFileSystem.sink(file).buffered().use { DefaultJson.encodeToSink(listOf(OREO) , it) } // Mylo will never be sent 😿 because there is already a stored value val newStore: KStore> = listStoreOf(file = file, default = listOf(MYLO)) val expect: List = listOf(OREO) diff --git a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStoreTests.kt b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStoreTests.kt index 7d63cc0..db5ef70 100644 --- a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStoreTests.kt +++ b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStoreTests.kt @@ -2,15 +2,14 @@ package io.github.xxfast.kstore.file.extensions import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.file.storeOf -import io.github.xxfast.kstore.file.utils.FILE_SYSTEM import kotlinx.coroutines.test.runTest +import kotlinx.io.files.Path +import kotlinx.io.files.SystemFileSystem import kotlinx.serialization.Serializable import kotlinx.serialization.json.int import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.long -import okio.Path -import okio.Path.Companion.toPath import kotlin.test.AfterTest import kotlin.test.Test import kotlin.test.assertEquals @@ -26,7 +25,7 @@ val MYLO_V2 = CatV2(name = "mylo", lives = 7, age = 2, kawaiiness = 12L) val MYLO_V3 = CatV3(name = "mylo", lives = 7, age = 2, isCute = true) class KVersionedStoreTests { - private val file: Path = "test_migration.json".toPath() + private val file: Path = Path("test_migration.json") private val storeV0: KStore = storeOf(file = file) @@ -76,8 +75,8 @@ class KVersionedStoreTests { @AfterTest fun cleanup() { - FILE_SYSTEM.delete(file) - FILE_SYSTEM.delete("${file.name}.version".toPath()) + SystemFileSystem.delete(file, mustExist = false) + SystemFileSystem.delete(Path("${file.name}.version"), mustExist = false) } @Test From c891e76cc267d1f0bb161b4e394bd08388fc4eb0 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 11:54:01 +0530 Subject: [PATCH 08/16] Bump api --- kstore-file/api/android/kstore-file.api | 19 ++++++++++++++----- kstore-file/api/desktop/kstore-file.api | 19 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/kstore-file/api/android/kstore-file.api b/kstore-file/api/android/kstore-file.api index 1d2836d..e8385a9 100644 --- a/kstore-file/api/android/kstore-file.api +++ b/kstore-file/api/android/kstore-file.api @@ -1,5 +1,5 @@ public final class io/github/xxfast/kstore/file/FileCodec : io/github/xxfast/kstore/Codec { - public fun (Lokio/Path;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V + public fun (Lkotlinx/io/files/Path;Lio/github/xxfast/kstore/file/format/KStoreFormat;Lkotlinx/serialization/KSerializer;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -9,13 +9,22 @@ public final class io/github/xxfast/kstore/file/extensions/KVersionedStoreKt { } public final class io/github/xxfast/kstore/file/extensions/VersionedCodec : io/github/xxfast/kstore/Codec { - public fun (Lokio/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lokio/Path;)V - public synthetic fun (Lokio/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lokio/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lkotlinx/io/files/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lkotlinx/io/files/Path;)V + public synthetic fun (Lkotlinx/io/files/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lkotlinx/io/files/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public final class io/github/xxfast/kstore/file/utils/FileSystemKt { - public static final fun getFILE_SYSTEM ()Lokio/FileSystem; +public abstract class io/github/xxfast/kstore/file/format/KStoreFormat { + public fun (Lkotlinx/serialization/KSerializer;)V + public abstract fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; + public abstract fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V + public final fun getSerializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/github/xxfast/kstore/file/format/KStoreFormatJson : io/github/xxfast/kstore/file/format/KStoreFormat { + public fun (Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V + public fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; + public fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V } diff --git a/kstore-file/api/desktop/kstore-file.api b/kstore-file/api/desktop/kstore-file.api index 1d2836d..e8385a9 100644 --- a/kstore-file/api/desktop/kstore-file.api +++ b/kstore-file/api/desktop/kstore-file.api @@ -1,5 +1,5 @@ public final class io/github/xxfast/kstore/file/FileCodec : io/github/xxfast/kstore/Codec { - public fun (Lokio/Path;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V + public fun (Lkotlinx/io/files/Path;Lio/github/xxfast/kstore/file/format/KStoreFormat;Lkotlinx/serialization/KSerializer;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -9,13 +9,22 @@ public final class io/github/xxfast/kstore/file/extensions/KVersionedStoreKt { } public final class io/github/xxfast/kstore/file/extensions/VersionedCodec : io/github/xxfast/kstore/Codec { - public fun (Lokio/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lokio/Path;)V - public synthetic fun (Lokio/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lokio/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun (Lkotlinx/io/files/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lkotlinx/io/files/Path;)V + public synthetic fun (Lkotlinx/io/files/Path;ILkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;Lkotlin/jvm/functions/Function2;Lkotlinx/io/files/Path;ILkotlin/jvm/internal/DefaultConstructorMarker;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public final class io/github/xxfast/kstore/file/utils/FileSystemKt { - public static final fun getFILE_SYSTEM ()Lokio/FileSystem; +public abstract class io/github/xxfast/kstore/file/format/KStoreFormat { + public fun (Lkotlinx/serialization/KSerializer;)V + public abstract fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; + public abstract fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V + public final fun getSerializer ()Lkotlinx/serialization/KSerializer; +} + +public final class io/github/xxfast/kstore/file/format/KStoreFormatJson : io/github/xxfast/kstore/file/format/KStoreFormat { + public fun (Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V + public fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; + public fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V } From eede2b16945860ca0cab3a889a4a917a0bf27401 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 11:54:13 +0530 Subject: [PATCH 09/16] Prepare for snapshot 0.9.0 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0e25af5..37b47a6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,7 +26,7 @@ allprojects { } group = "io.github.xxfast" - version = "0.8.1" + version = "0.9.0-SNAPSHOT" apply(plugin = "org.jetbrains.kotlin.plugin.serialization") apply(plugin = "org.jetbrains.kotlinx.kover") From 3f8f578163e2579dd775e9440757e9299622a01d Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:19:39 +0530 Subject: [PATCH 10/16] Fix kover code coverage reports --- .github/workflows/build.yml | 3 +-- build.gradle.kts | 4 ---- kstore-storage/build.gradle.kts | 2 -- kstore/build.gradle.kts | 6 +++++- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 79dd121..e106727 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,9 +43,8 @@ jobs: if: ${{ github.event_name == 'pull_request' }} id: kover uses: mi-kas/kover-report@v1 - continue-on-error: true # https://github.com/mi-kas/kover-report/issues/111 with: - path: ${{ github.workspace }}/build/reports/kover/merged/xml/report.xml + path: ${{ github.workspace }}/kstore/build/reports/kover/report.xml token: ${{ secrets.GITHUB_TOKEN }} title: Code Coverage update-comment: true diff --git a/build.gradle.kts b/build.gradle.kts index 37b47a6..bceb0eb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -104,7 +104,3 @@ allprojects { dependsOn(project.tasks.withType(Sign::class.java)) } } - -//koverMerged { -// enable() -//} diff --git a/kstore-storage/build.gradle.kts b/kstore-storage/build.gradle.kts index 367e8de..026b8bb 100644 --- a/kstore-storage/build.gradle.kts +++ b/kstore-storage/build.gradle.kts @@ -1,4 +1,3 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask @@ -14,7 +13,6 @@ kotlin { browser() } - @OptIn(ExperimentalWasmDsl::class) wasmJs { binaries.executable() browser() diff --git a/kstore/build.gradle.kts b/kstore/build.gradle.kts index 5d11ed8..65001e8 100644 --- a/kstore/build.gradle.kts +++ b/kstore/build.gradle.kts @@ -154,7 +154,6 @@ kotlin { // Node.js Canary is set to 21.0.0-v8-canary20231019bd785be450 // as that is the last version to ship Windows binaries too. // - rootProject.extensions.configure { nodeVersion = "21.0.0-v8-canary20231019bd785be450" nodeDownloadBaseUrl = "https://nodejs.org/download/v8-canary" @@ -166,4 +165,9 @@ rootProject.tasks.withType().configureEach { if (!args.contains(flag)) { args.add(flag) } +} + +dependencies { + kover(project(":kstore-file")) + kover(project(":kstore-storage")) } \ No newline at end of file From f216af9a346fb0f3478119bbb59f16bd858ddfd9 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:23:40 +0530 Subject: [PATCH 11/16] Fix github action for kover coverage report --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e106727..7d7b58d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,7 +37,7 @@ jobs: run: ./gradlew apiCheck - name: Generate kover coverage report - run: ./gradlew koverMergedXmlReport + run: ./gradlew koverXmlReport - name: Add coverage report to PR if: ${{ github.event_name == 'pull_request' }} From 77b3965a1326895c6648210a8416953c1b84ca68 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:28:51 +0530 Subject: [PATCH 12/16] Downgrade to kotlin 2.0.10 --- .gitignore | 4 ++-- gradle/libs.versions.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 0b3eb57..48e06f0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ /build/classes/kotlin/jvm/main/ /build/classes/kotlin/jvm/test/ local.properties -/.kotlin +/.kotlin/ # Mac -.DS_Store \ No newline at end of file +.DS_Store diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 72ce334..103455f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ agp = "8.0.2" androidx-test-junit = "1.2.1" junit = "4.13.2" junit-jupiter="5.10.1" -kotlin = "2.0.20-Beta2" +kotlin = "2.0.10" kotlinx-coroutines = "1.9.0-RC" kotlinx-serialization = "1.7.1" kotlinx-io = "0.5.0" From 4154788626bb884ed262359c32d218992c273bd8 Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:42:46 +0530 Subject: [PATCH 13/16] Remove kstore formats --- .../io/github/xxfast/kstore/file/FileCodec.kt | 24 ++++++++++++------ .../io/github/xxfast/kstore/file/KStore.kt | 12 ++++----- .../kstore/file/extensions/KListStore.kt | 3 +-- .../xxfast/kstore/file/format/KStoreFormat.kt | 23 ----------------- .../kstore/file/format/KStoreFormatJson.kt | 25 ------------------- .../xxfast/kstore/file/FileCodecTests.kt | 3 +-- 6 files changed, 23 insertions(+), 67 deletions(-) delete mode 100644 kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt delete mode 100644 kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt index 93bb0bd..1d3f5ba 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt @@ -2,37 +2,45 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.Codec -import io.github.xxfast.kstore.file.format.KStoreFormat +import io.github.xxfast.kstore.DefaultJson import kotlinx.io.buffered import kotlinx.io.files.FileNotFoundException import kotlinx.io.files.Path import kotlinx.io.files.SystemFileSystem +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.KSerializer import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.io.decodeFromSource +import kotlinx.serialization.json.io.encodeToSink +import kotlinx.serialization.serializer public inline fun FileCodec( file: Path, - format: KStoreFormat, - ): FileCodec = FileCodec( + json: Json = DefaultJson, +): FileCodec = FileCodec( file = file, - format = format, - serializer = format.serializer, + json = json, + serializer = json.serializersModule.serializer(), ) public class FileCodec( private val file: Path, - private val format: KStoreFormat, + private val json: Json, private val serializer: KSerializer, ) : Codec { + + @OptIn(ExperimentalSerializationApi::class) override suspend fun decode(): T? = try { - format.decodeFromSource(serializer, SystemFileSystem.source(file).buffered()) + SystemFileSystem.source(file).buffered().use { json.decodeFromSource(serializer, it) } } catch (e: FileNotFoundException) { null } + @OptIn(ExperimentalSerializationApi::class) override suspend fun encode(value: T?) { - if (value != null) SystemFileSystem.sink(file).buffered().use { format.encodeToSink(serializer, value, it) } + if (value != null) SystemFileSystem.sink(file).buffered().use { json.encodeToSink(serializer, value, it) } else SystemFileSystem.delete(file) } } diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt index 4fcba7a..c4b0eb4 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt @@ -2,11 +2,9 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore -import io.github.xxfast.kstore.file.format.KStoreFormat -import io.github.xxfast.kstore.file.format.KStoreFormatJson import kotlinx.io.files.Path import kotlinx.serialization.Serializable -import kotlinx.serialization.serializer +import kotlinx.serialization.json.Json /** * Creates a store with [FileCodec] @@ -14,7 +12,7 @@ import kotlinx.serialization.serializer * @param file path to the file that is managed by this store * @param default returns this value if the file is not found. defaults to null * @param enableCache maintain a cache. If set to false, it always reads from disk - * @param format Serializer to use. defaults to [KStoreFormatJson] + * @param json JSON Serializer to use. defaults to [DefaultJson] * * @return store that contains a value of type [T] */ @@ -22,9 +20,9 @@ public inline fun storeOf( file: Path, default: T? = null, enableCache: Boolean = true, - format: KStoreFormat = KStoreFormatJson(DefaultJson, DefaultJson.serializersModule.serializer()), - ): KStore = KStore( + json: Json = DefaultJson, +): KStore = KStore( default = default, enableCache = enableCache, - codec = FileCodec(file, format) + codec = FileCodec(file, json) ) diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt index bc341d7..d64b2ed 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt @@ -1,7 +1,6 @@ package io.github.xxfast.kstore.file.extensions import io.github.xxfast.kstore.KStore -import io.github.xxfast.kstore.file.format.KStoreFormatJson import io.github.xxfast.kstore.file.storeOf import kotlinx.io.files.Path import kotlinx.serialization.Serializable @@ -23,4 +22,4 @@ public inline fun listStoreOf( default: List = emptyList(), enableCache: Boolean = true, json: Json = Json { ignoreUnknownKeys = true; encodeDefaults = true }, -): KStore> = storeOf(file, default, enableCache, KStoreFormatJson(json, json.serializersModule.serializer())) \ No newline at end of file +): KStore> = storeOf(file, default, enableCache, json) \ No newline at end of file diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt deleted file mode 100644 index 2807089..0000000 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormat.kt +++ /dev/null @@ -1,23 +0,0 @@ -package io.github.xxfast.kstore.file.format - -import kotlinx.io.Sink -import kotlinx.io.Source -import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.SerializationStrategy - -public abstract class KStoreFormat(public val serializer: KSerializer) { - - public abstract fun decodeFromSource( - deserializer: DeserializationStrategy, - source: Source - ): T - - public abstract fun encodeToSink( - serializer: SerializationStrategy, - value: T, - sink: Sink - ) - -} \ No newline at end of file diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt deleted file mode 100644 index d7cee9e..0000000 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/format/KStoreFormatJson.kt +++ /dev/null @@ -1,25 +0,0 @@ -package io.github.xxfast.kstore.file.format - -import kotlinx.io.Sink -import kotlinx.io.Source -import kotlinx.serialization.DeserializationStrategy -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.KSerializer -import kotlinx.serialization.Serializable -import kotlinx.serialization.SerializationStrategy -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.io.decodeFromSource -import kotlinx.serialization.json.io.encodeToSink - -public class KStoreFormatJson(private val json: Json, serializer: KSerializer) : - KStoreFormat(serializer) { - @OptIn(ExperimentalSerializationApi::class) - override fun decodeFromSource(deserializer: DeserializationStrategy, source: Source): T { - return json.decodeFromSource(deserializer, source) - } - - @OptIn(ExperimentalSerializationApi::class) - override fun encodeToSink(serializer: SerializationStrategy, value: T, sink: Sink) { - json.encodeToSink(serializer, value, sink) - } -} \ No newline at end of file diff --git a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt index b9ec450..8161e3b 100644 --- a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt +++ b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt @@ -1,7 +1,6 @@ package io.github.xxfast.kstore.file import io.github.xxfast.kstore.DefaultJson -import io.github.xxfast.kstore.file.format.KStoreFormatJson import kotlinx.coroutines.test.runTest import kotlinx.io.buffered import kotlinx.io.files.Path @@ -22,7 +21,7 @@ class FileCodecTests { private val codec: FileCodec = FileCodec( file = file, - format = KStoreFormatJson(DefaultJson, Cat.serializer()), + json = DefaultJson, ) @OptIn(ExperimentalSerializationApi::class) From a6cae8914e2318c6f14d27c22f7dd7724967133b Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:47:53 +0530 Subject: [PATCH 14/16] Add factory method for custom codecs --- .../io/github/xxfast/kstore/file/FileCodec.kt | 6 +++++ .../io/github/xxfast/kstore/file/KStore.kt | 23 ++++++++++++++++++- .../kstore/file/extensions/KListStore.kt | 1 - .../xxfast/kstore/file/FileCodecTests.kt | 1 - 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt index 1d3f5ba..38a4268 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/FileCodec.kt @@ -15,6 +15,12 @@ import kotlinx.serialization.json.io.decodeFromSource import kotlinx.serialization.json.io.encodeToSink import kotlinx.serialization.serializer +/** + * Creates a store with [FileCodec] with json serializer + * @param file path to the file that is managed by this store + * @param json JSON Serializer to use. defaults to [DefaultJson] + * @return store that contains a value of type [T] + */ public inline fun FileCodec( file: Path, json: Json = DefaultJson, diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt index c4b0eb4..030b6fd 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/KStore.kt @@ -1,5 +1,6 @@ package io.github.xxfast.kstore.file +import io.github.xxfast.kstore.Codec import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore import kotlinx.io.files.Path @@ -21,8 +22,28 @@ public inline fun storeOf( default: T? = null, enableCache: Boolean = true, json: Json = DefaultJson, +): KStore = storeOf( + codec = FileCodec(file, json), + default = default, + enableCache = enableCache, +) + +/** + * Creates a store with a given codec + * + * @param default returns this value if the file is not found. defaults to null + * @param enableCache maintain a cache. If set to false, it always reads from disk + * @param codec codec to be used. + * + * @return store that contains a value of type [T] + */ +public inline fun storeOf( + codec: Codec, + default: T? = null, + enableCache: Boolean = true, ): KStore = KStore( default = default, enableCache = enableCache, - codec = FileCodec(file, json) + codec = codec ) + diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt index d64b2ed..01b98b0 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KListStore.kt @@ -5,7 +5,6 @@ import io.github.xxfast.kstore.file.storeOf import kotlinx.io.files.Path import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json -import kotlinx.serialization.serializer /** * Creates a store that contains a list diff --git a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt index 8161e3b..152dc37 100644 --- a/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt +++ b/kstore-file/src/commonTest/kotlin/io/github/xxfast/kstore/file/FileCodecTests.kt @@ -15,7 +15,6 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertFailsWith - class FileCodecTests { private val file = Path(FILE_PATH) From 07072327aa233ec31fc075d07a7f27164d23bdfe Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 12:59:49 +0530 Subject: [PATCH 15/16] Update documentation --- README.md | 2 +- docs/topics/overview.md | 4 ++-- docs/topics/usage-list-store.md | 2 +- docs/topics/usage.md | 16 ++++++++++------ kstore-file/api/android/kstore-file.api | 15 +-------------- kstore-file/api/desktop/kstore-file.api | 15 +-------------- 6 files changed, 16 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 4102f42..9ed77db 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Build](https://github.com/xxfast/KStore/actions/workflows/build.yml/badge.svg)](https://github.com/xxfast/KStore/actions/workflows/build.yml) [![Kotlin Alpha](https://kotl.in/badges/alpha.svg)](https://kotlinlang.org/docs/components-stability.html) -[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.0Beta2-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.10-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) [![Maven Central](https://img.shields.io/maven-central/v/io.github.xxfast/kstore?color=blue)](https://search.maven.org/search?q=g:io.github.xxfast) ![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat) diff --git a/docs/topics/overview.md b/docs/topics/overview.md index cf6879f..6e6dc48 100644 --- a/docs/topics/overview.md +++ b/docs/topics/overview.md @@ -4,7 +4,7 @@ [![Build](https://github.com/xxfast/KStore/actions/workflows/build.yml/badge.svg)](https://github.com/xxfast/KStore/actions/workflows/build.yml) [![Kotlin Alpha](https://kotl.in/badges/alpha.svg)](https://kotlinlang.org/docs/components-stability.html) -[![Kotlin](https://img.shields.io/badge/Kotlin-1.9.21-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.10-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org) [![Maven Central](https://img.shields.io/maven-central/v/io.github.xxfast/kstore?color=blue)](https://search.maven.org/search?q=g:io.github.xxfast) ![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat) @@ -35,7 +35,7 @@ Inspired by [RxStore](https://github.com/Gridstone/RxStore) @Serializable data class Pet(val name: String, val age: Int) // Create a store -val store: KStore = storeOf(filePath = "path/to/my_cats.json") +val store: KStore = storeOf(file = Path("path/to/my_cats.json")) // Get, set, update or delete values val mylo: Pet? = store.get() diff --git a/docs/topics/usage-list-store.md b/docs/topics/usage-list-store.md index 272ab22..23f72f7 100644 --- a/docs/topics/usage-list-store.md +++ b/docs/topics/usage-list-store.md @@ -7,7 +7,7 @@ KStore provides you with some convenient extensions to manage stores that contai ## Create a list store `listStoreOf` is the same as `storeOf`, but defaults to empty list instead of `null` ```kotlin -val listStore: KStore> = listStoreOf("path/to/file") +val listStore: KStore> = listStoreOf(file = "path/to/file") ``` ## Get values diff --git a/docs/topics/usage.md b/docs/topics/usage.md index aead1d0..5ad65b9 100644 --- a/docs/topics/usage.md +++ b/docs/topics/usage.md @@ -5,7 +5,7 @@ Initialise your stores and keep a reference to it in your app (_preferably_ usin ### KStore File ```kotlin -val store: KStore = storeOf(file = "$appDir/my_cats.json".toPath()) +val store: KStore = storeOf(file = Path("$appDir/my_cats.json")) ``` > **NOTE** - Setting up the `appDir` is covered [here](using-platform-paths.md) @@ -16,15 +16,19 @@ val store: KStore = storeOf(file = "$appDir/my_cats.json".toPath()) ``` ### Other configuration options -Everything you want is in the factory method +Everything you want is in factory methods + ```kotlin val store: KStore = storeOf( - // For kstore-file - file = "$appDir/$fileName.json".toPath(), + // For kstore-file with json + file = Path("$appDir/$fileName.json"), - // For kstore-storage + // Or for kstore-storage key = "$keyName", storage = localStorage, // optional + + // Or your own custom codec + codec = YourCustomCodec(), // optional // Returns this value if the file is not found. Defaults to null default = null, // optional @@ -36,7 +40,7 @@ val store: KStore = storeOf( version = 0, // optional migration = { version, jsonElement -> default }, // optional - // Serializer to use. Defaults serializer ignores unknown keys and encodes the defaults + // For kstore-file, the serializer to use. serializer = Json { ignoreUnknownKeys = true encodeDefaults = true diff --git a/kstore-file/api/android/kstore-file.api b/kstore-file/api/android/kstore-file.api index e8385a9..db52c37 100644 --- a/kstore-file/api/android/kstore-file.api +++ b/kstore-file/api/android/kstore-file.api @@ -1,5 +1,5 @@ public final class io/github/xxfast/kstore/file/FileCodec : io/github/xxfast/kstore/Codec { - public fun (Lkotlinx/io/files/Path;Lio/github/xxfast/kstore/file/format/KStoreFormat;Lkotlinx/serialization/KSerializer;)V + public fun (Lkotlinx/io/files/Path;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -15,16 +15,3 @@ public final class io/github/xxfast/kstore/file/extensions/VersionedCodec : io/g public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public abstract class io/github/xxfast/kstore/file/format/KStoreFormat { - public fun (Lkotlinx/serialization/KSerializer;)V - public abstract fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; - public abstract fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V - public final fun getSerializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/github/xxfast/kstore/file/format/KStoreFormatJson : io/github/xxfast/kstore/file/format/KStoreFormat { - public fun (Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V - public fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; - public fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V -} - diff --git a/kstore-file/api/desktop/kstore-file.api b/kstore-file/api/desktop/kstore-file.api index e8385a9..db52c37 100644 --- a/kstore-file/api/desktop/kstore-file.api +++ b/kstore-file/api/desktop/kstore-file.api @@ -1,5 +1,5 @@ public final class io/github/xxfast/kstore/file/FileCodec : io/github/xxfast/kstore/Codec { - public fun (Lkotlinx/io/files/Path;Lio/github/xxfast/kstore/file/format/KStoreFormat;Lkotlinx/serialization/KSerializer;)V + public fun (Lkotlinx/io/files/Path;Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V public fun decode (Lkotlin/coroutines/Continuation;)Ljava/lang/Object; public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } @@ -15,16 +15,3 @@ public final class io/github/xxfast/kstore/file/extensions/VersionedCodec : io/g public fun encode (Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; } -public abstract class io/github/xxfast/kstore/file/format/KStoreFormat { - public fun (Lkotlinx/serialization/KSerializer;)V - public abstract fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; - public abstract fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V - public final fun getSerializer ()Lkotlinx/serialization/KSerializer; -} - -public final class io/github/xxfast/kstore/file/format/KStoreFormatJson : io/github/xxfast/kstore/file/format/KStoreFormat { - public fun (Lkotlinx/serialization/json/Json;Lkotlinx/serialization/KSerializer;)V - public fun decodeFromSource (Lkotlinx/serialization/DeserializationStrategy;Lkotlinx/io/Source;)Ljava/lang/Object; - public fun encodeToSink (Lkotlinx/serialization/SerializationStrategy;Ljava/lang/Object;Lkotlinx/io/Sink;)V -} - From 342ae43b4536a382d7ae4d5cfebc89e96948398a Mon Sep 17 00:00:00 2001 From: xxfast Date: Wed, 14 Aug 2024 13:09:53 +0530 Subject: [PATCH 16/16] Improve coverage for custom codecs --- .../kstore/file/extensions/KVersionedStore.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt index 53c8db8..8066e09 100644 --- a/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt +++ b/kstore-file/src/commonMain/kotlin/io/github/xxfast/kstore/file/extensions/KVersionedStore.kt @@ -1,7 +1,9 @@ package io.github.xxfast.kstore.file.extensions import io.github.xxfast.kstore.Codec +import io.github.xxfast.kstore.DefaultJson import io.github.xxfast.kstore.KStore +import io.github.xxfast.kstore.file.storeOf import kotlinx.io.buffered import kotlinx.io.files.FileNotFoundException import kotlinx.io.files.Path @@ -35,13 +37,14 @@ public inline fun storeOf( version: Int, default: T? = null, enableCache: Boolean = true, - json: Json = Json { ignoreUnknownKeys = true; encodeDefaults = true }, + json: Json = DefaultJson, versionPath: Path = Path("$file.version"), // TODO: Save to file metadata instead noinline migration: Migration = DefaultMigration(default), -): KStore { - val codec: Codec = VersionedCodec(file, version, json, json.serializersModule.serializer(), migration, versionPath) - return KStore(default, enableCache, codec) -} +): KStore = storeOf( + codec = VersionedCodec(file, version, json, json.serializersModule.serializer(), migration, versionPath), + default = default, + enableCache = enableCache, +) @Suppress("FunctionName") // Fake constructor public fun DefaultMigration(default: T?): Migration = { _, _ -> default }