mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 06:00:22 +00:00 
			
		
		
		
	deprecations handling
This commit is contained in:
		@@ -2,6 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## 0.12.0-beta
 | 
					## 0.12.0-beta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**OLD DEPRECATIONS HAVE BEEN REMOVED**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* `Versions`
 | 
					* `Versions`
 | 
				
			||||||
  * `Kotlin`: `1.6.21` -> `1.7.0`
 | 
					  * `Kotlin`: `1.6.21` -> `1.7.0`
 | 
				
			||||||
  * `Coroutines`: `1.6.3` -> `1.6.4`
 | 
					  * `Coroutines`: `1.6.3` -> `1.6.4`
 | 
				
			||||||
@@ -9,6 +11,8 @@
 | 
				
			|||||||
  * `Compose`: `1.2.0-alpha01-dev729` -> `1.2.0-alpha01-dev753`
 | 
					  * `Compose`: `1.2.0-alpha01-dev729` -> `1.2.0-alpha01-dev753`
 | 
				
			||||||
  * `Klock`: `2.7.0` -> `3.0.0`
 | 
					  * `Klock`: `2.7.0` -> `3.0.0`
 | 
				
			||||||
  * `uuid`: `0.4.1` -> `0.5.0`
 | 
					  * `uuid`: `0.4.1` -> `0.5.0`
 | 
				
			||||||
 | 
					* `Ktor`:
 | 
				
			||||||
 | 
					  * All previously standard functions related to work with binary data by default have been deprecated
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 0.11.12
 | 
					## 0.11.12
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					@file:Suppress("unused", "NOTHING_TO_INLINE")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package dev.inmo.micro_utils.common
 | 
					package dev.inmo.micro_utils.common
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import kotlinx.serialization.*
 | 
					import kotlinx.serialization.*
 | 
				
			||||||
@@ -21,11 +23,10 @@ import kotlinx.serialization.encoding.*
 | 
				
			|||||||
sealed interface Either<T1, T2> {
 | 
					sealed interface Either<T1, T2> {
 | 
				
			||||||
    val optionalT1: Optional<T1>
 | 
					    val optionalT1: Optional<T1>
 | 
				
			||||||
    val optionalT2: Optional<T2>
 | 
					    val optionalT2: Optional<T2>
 | 
				
			||||||
    @Deprecated("Use optionalT1 instead", ReplaceWith("optionalT1"))
 | 
					
 | 
				
			||||||
    val t1: T1?
 | 
					    val t1OrNull: T1?
 | 
				
			||||||
        get() = optionalT1.dataOrNull()
 | 
					        get() = optionalT1.dataOrNull()
 | 
				
			||||||
    @Deprecated("Use optionalT2 instead", ReplaceWith("optionalT2"))
 | 
					    val t2OrNull: T2?
 | 
				
			||||||
    val t2: T2?
 | 
					 | 
				
			||||||
        get() = optionalT2.dataOrNull()
 | 
					        get() = optionalT2.dataOrNull()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,7 +34,7 @@ class EitherSerializer<T1, T2>(
 | 
				
			|||||||
    t1Serializer: KSerializer<T1>,
 | 
					    t1Serializer: KSerializer<T1>,
 | 
				
			||||||
    t2Serializer: KSerializer<T2>,
 | 
					    t2Serializer: KSerializer<T2>,
 | 
				
			||||||
) : KSerializer<Either<T1, T2>> {
 | 
					) : KSerializer<Either<T1, T2>> {
 | 
				
			||||||
    @OptIn(InternalSerializationApi::class)
 | 
					    @OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class)
 | 
				
			||||||
    override val descriptor: SerialDescriptor = buildSerialDescriptor(
 | 
					    override val descriptor: SerialDescriptor = buildSerialDescriptor(
 | 
				
			||||||
        "TypedSerializer",
 | 
					        "TypedSerializer",
 | 
				
			||||||
        SerialKind.CONTEXTUAL
 | 
					        SerialKind.CONTEXTUAL
 | 
				
			||||||
@@ -96,7 +97,7 @@ class EitherSerializer<T1, T2>(
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
@Serializable
 | 
					@Serializable
 | 
				
			||||||
data class EitherFirst<T1, T2>(
 | 
					data class EitherFirst<T1, T2>(
 | 
				
			||||||
    override val t1: T1
 | 
					    val t1: T1
 | 
				
			||||||
) : Either<T1, T2> {
 | 
					) : Either<T1, T2> {
 | 
				
			||||||
    override val optionalT1: Optional<T1> = t1.optional
 | 
					    override val optionalT1: Optional<T1> = t1.optional
 | 
				
			||||||
    override val optionalT2: Optional<T2> = Optional.absent()
 | 
					    override val optionalT2: Optional<T2> = Optional.absent()
 | 
				
			||||||
@@ -107,7 +108,7 @@ data class EitherFirst<T1, T2>(
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
@Serializable
 | 
					@Serializable
 | 
				
			||||||
data class EitherSecond<T1, T2>(
 | 
					data class EitherSecond<T1, T2>(
 | 
				
			||||||
    override val t2: T2
 | 
					    val t2: T2
 | 
				
			||||||
) : Either<T1, T2> {
 | 
					) : Either<T1, T2> {
 | 
				
			||||||
    override val optionalT1: Optional<T1> = Optional.absent()
 | 
					    override val optionalT1: Optional<T1> = Optional.absent()
 | 
				
			||||||
    override val optionalT2: Optional<T2> = t2.optional
 | 
					    override val optionalT2: Optional<T2> = t2.optional
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -95,9 +95,3 @@ fun <T> Optional<T>.dataOrThrow(throwable: Throwable) = @OptIn(Warning::class) i
 | 
				
			|||||||
 * Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
 | 
					 * Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
inline fun <T> Optional<T>.dataOrElse(block: () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
 | 
					inline fun <T> Optional<T>.dataOrElse(block: () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@Deprecated("dataOrElse now is inline", ReplaceWith("dataOrElse", "dev.inmo.micro_utils.common.dataOrElse"))
 | 
					 | 
				
			||||||
suspend fun <T> Optional<T>.dataOrElseSuspendable(block: suspend () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.crypto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
 | 
					 | 
				
			||||||
expect fun SourceString.hmacSha256(key: String): String
 | 
					 | 
				
			||||||
@@ -7,8 +7,3 @@ external interface CryptoJs {
 | 
				
			|||||||
@JsModule("crypto-js")
 | 
					@JsModule("crypto-js")
 | 
				
			||||||
@JsNonModule
 | 
					@JsNonModule
 | 
				
			||||||
external val CryptoJS: CryptoJs
 | 
					external val CryptoJS: CryptoJs
 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
 | 
					 | 
				
			||||||
actual fun SourceString.hmacSha256(key: String): String {
 | 
					 | 
				
			||||||
    return CryptoJS.asDynamic().HmacSHA256(this, key).toString().unsafeCast<String>()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.crypto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import javax.crypto.Mac
 | 
					 | 
				
			||||||
import javax.crypto.spec.SecretKeySpec
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
 | 
					 | 
				
			||||||
actual fun SourceString.hmacSha256(key: String): String {
 | 
					 | 
				
			||||||
    val mac = Mac.getInstance("HmacSHA256")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    val secretKey = SecretKeySpec(key.toByteArray(), "HmacSHA256")
 | 
					 | 
				
			||||||
    mac.init(secretKey)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return mac.doFinal(toByteArray()).hex()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -47,24 +47,11 @@ fun <I : O, O : State> CheckableHandlerHolder(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("CheckableHandlerHolder"))
 | 
					 | 
				
			||||||
fun <I : O, O : State> StateHandlerHolder(
 | 
					 | 
				
			||||||
    inputKlass: KClass<I>,
 | 
					 | 
				
			||||||
    strict: Boolean = false,
 | 
					 | 
				
			||||||
    delegateTo: StatesHandler<I, O>
 | 
					 | 
				
			||||||
) = CheckableHandlerHolder(inputKlass, strict, delegateTo)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
inline fun <reified I : O, O : State> CheckableHandlerHolder(
 | 
					inline fun <reified I : O, O : State> CheckableHandlerHolder(
 | 
				
			||||||
    strict: Boolean = false,
 | 
					    strict: Boolean = false,
 | 
				
			||||||
    delegateTo: StatesHandler<I, O>
 | 
					    delegateTo: StatesHandler<I, O>
 | 
				
			||||||
) = CheckableHandlerHolder(I::class, strict, delegateTo)
 | 
					) = CheckableHandlerHolder(I::class, strict, delegateTo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("CheckableHandlerHolder"))
 | 
					 | 
				
			||||||
inline fun <reified I : O, O : State> StateHandlerHolder(
 | 
					 | 
				
			||||||
    strict: Boolean = false,
 | 
					 | 
				
			||||||
    delegateTo: StatesHandler<I, O>
 | 
					 | 
				
			||||||
) = CheckableHandlerHolder(strict, delegateTo)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
inline fun <reified I : O, O: State> StatesHandler<I, O>.holder(
 | 
					inline fun <reified I : O, O: State> StatesHandler<I, O>.holder(
 | 
				
			||||||
    strict: Boolean = true
 | 
					    strict: Boolean = true
 | 
				
			||||||
) = CheckableHandlerHolder<I, O>(
 | 
					) = CheckableHandlerHolder<I, O>(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,9 +68,6 @@ open class DefaultUpdatableStatesMachine<T : State>(
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    protected open suspend fun shouldReplaceJob(previous: Optional<T>, new: T): Boolean = previous.dataOrNull() != new
 | 
					    protected open suspend fun shouldReplaceJob(previous: Optional<T>, new: T): Boolean = previous.dataOrNull() != new
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Deprecated("Overwrite shouldReplaceJob instead")
 | 
					 | 
				
			||||||
    protected open suspend fun compare(previous: Optional<T>, new: T): Boolean = shouldReplaceJob(previous, new)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun updateChain(currentState: T, newState: T) {
 | 
					    override suspend fun updateChain(currentState: T, newState: T) {
 | 
				
			||||||
        statesManager.update(currentState, newState)
 | 
					        statesManager.update(currentState, newState)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.fsm.common.managers
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.fsm.common.State
 | 
					 | 
				
			||||||
import kotlinx.coroutines.flow.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Creates [DefaultStatesManager] with [InMemoryDefaultStatesManagerRepo]
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @param onContextsConflictResolver Receive old [State], new one and the state currently placed on new [State.context]
 | 
					 | 
				
			||||||
 * key. In case when this callback will returns true, the state placed on [State.context] of new will be replaced by
 | 
					 | 
				
			||||||
 * new state by using [endChain] with that state
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@Deprecated("Use DefaultStatesManager instead", ReplaceWith("DefaultStatesManager"))
 | 
					 | 
				
			||||||
fun <T: State> InMemoryStatesManager(
 | 
					 | 
				
			||||||
    onStartContextsConflictResolver: suspend (old: T, new: T) -> Boolean = { _, _ -> true },
 | 
					 | 
				
			||||||
    onUpdateContextsConflictResolver: suspend (old: T, new: T, currentNew: T) -> Boolean = { _, _, _ -> true }
 | 
					 | 
				
			||||||
) = DefaultStatesManager(onStartContextsConflictResolver = onStartContextsConflictResolver, onUpdateContextsConflictResolver = onUpdateContextsConflictResolver)
 | 
					 | 
				
			||||||
@@ -19,6 +19,7 @@ import kotlinx.serialization.DeserializationStrategy
 | 
				
			|||||||
 * @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
 | 
					 * @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
 | 
				
			||||||
 * connection. Must return true in case if must be reconnected. By default always reconnecting
 | 
					 * connection. Must return true in case if must be reconnected. By default always reconnecting
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
inline fun <T> HttpClient.createStandardWebsocketFlow(
 | 
					inline fun <T> HttpClient.createStandardWebsocketFlow(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    crossinline checkReconnection: suspend (Throwable?) -> Boolean = { true },
 | 
					    crossinline checkReconnection: suspend (Throwable?) -> Boolean = { true },
 | 
				
			||||||
@@ -65,6 +66,7 @@ inline fun <T> HttpClient.createStandardWebsocketFlow(
 | 
				
			|||||||
 * @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
 | 
					 * @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
 | 
				
			||||||
 * connection. Must return true in case if must be reconnected. By default always reconnecting
 | 
					 * connection. Must return true in case if must be reconnected. By default always reconnecting
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
inline fun <T> HttpClient.createStandardWebsocketFlow(
 | 
					inline fun <T> HttpClient.createStandardWebsocketFlow(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>,
 | 
					    deserializer: DeserializationStrategy<T>,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,9 +12,7 @@ import io.ktor.http.*
 | 
				
			|||||||
import io.ktor.utils.io.core.ByteReadPacket
 | 
					import io.ktor.utils.io.core.ByteReadPacket
 | 
				
			||||||
import kotlinx.serialization.*
 | 
					import kotlinx.serialization.*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("This class will be removed in next")
 | 
					@Deprecated("This class will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
typealias BodyPair<T> = Pair<SerializationStrategy<T>, T>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class UnifiedRequester(
 | 
					class UnifiedRequester(
 | 
				
			||||||
    val client: HttpClient = HttpClient(),
 | 
					    val client: HttpClient = HttpClient(),
 | 
				
			||||||
    val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					    val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
				
			||||||
@@ -100,8 +98,10 @@ class UnifiedRequester(
 | 
				
			|||||||
    ) = createStandardWebsocketFlow(url, { true }, deserializer, requestBuilder)
 | 
					    ) = createStandardWebsocketFlow(url, { true }, deserializer, requestBuilder)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This property will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
val defaultRequester = UnifiedRequester()
 | 
					val defaultRequester = UnifiedRequester()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <ResultType> HttpClient.uniget(
 | 
					suspend fun <ResultType> HttpClient.uniget(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    resultDeserializer: DeserializationStrategy<ResultType>,
 | 
					    resultDeserializer: DeserializationStrategy<ResultType>,
 | 
				
			||||||
@@ -111,6 +111,7 @@ suspend fun <ResultType> HttpClient.uniget(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
 | 
					fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
 | 
				
			||||||
    value: T,
 | 
					    value: T,
 | 
				
			||||||
    serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					    serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
				
			||||||
@@ -119,6 +120,7 @@ fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
 | 
				
			|||||||
    value
 | 
					    value
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <BodyType, ResultType> HttpClient.unipost(
 | 
					suspend fun <BodyType, ResultType> HttpClient.unipost(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    bodyInfo: Pair<SerializationStrategy<BodyType>, BodyType>,
 | 
					    bodyInfo: Pair<SerializationStrategy<BodyType>, BodyType>,
 | 
				
			||||||
@@ -132,6 +134,7 @@ suspend fun <BodyType, ResultType> HttpClient.unipost(
 | 
				
			|||||||
    serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>())
 | 
					    serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <ResultType> HttpClient.unimultipart(
 | 
					suspend fun <ResultType> HttpClient.unimultipart(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    filename: String,
 | 
					    filename: String,
 | 
				
			||||||
@@ -160,6 +163,7 @@ suspend fun <ResultType> HttpClient.unimultipart(
 | 
				
			|||||||
    requestBuilder()
 | 
					    requestBuilder()
 | 
				
			||||||
}.let { serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>()) }
 | 
					}.let { serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>()) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
 | 
					suspend fun <BodyType, ResultType> HttpClient.unimultipart(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    filename: String,
 | 
					    filename: String,
 | 
				
			||||||
@@ -197,6 +201,7 @@ suspend fun <BodyType, ResultType> HttpClient.unimultipart(
 | 
				
			|||||||
    serialFormat
 | 
					    serialFormat
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <ResultType> HttpClient.unimultipart(
 | 
					suspend fun <ResultType> HttpClient.unimultipart(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    mppFile: MPPFile,
 | 
					    mppFile: MPPFile,
 | 
				
			||||||
@@ -218,6 +223,7 @@ suspend fun <ResultType> HttpClient.unimultipart(
 | 
				
			|||||||
    serialFormat
 | 
					    serialFormat
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
 | 
					suspend fun <BodyType, ResultType> HttpClient.unimultipart(
 | 
				
			||||||
    url: String,
 | 
					    url: String,
 | 
				
			||||||
    mppFile: MPPFile,
 | 
					    mppFile: MPPFile,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -33,6 +33,7 @@ fun <T> Route.includeWebsocketHandling(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon")
 | 
				
			||||||
fun <T> Route.includeWebsocketHandling(
 | 
					fun <T> Route.includeWebsocketHandling(
 | 
				
			||||||
    suburl: String,
 | 
					    suburl: String,
 | 
				
			||||||
    flow: Flow<T>,
 | 
					    flow: Flow<T>,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.Flow
 | 
				
			|||||||
import kotlinx.serialization.DeserializationStrategy
 | 
					import kotlinx.serialization.DeserializationStrategy
 | 
				
			||||||
import kotlinx.serialization.SerializationStrategy
 | 
					import kotlinx.serialization.SerializationStrategy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This class method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
class UnifiedRouter(
 | 
					class UnifiedRouter(
 | 
				
			||||||
    val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat,
 | 
					    val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat,
 | 
				
			||||||
    val serialFormatContentType: ContentType = standardKtorSerialFormatContentType
 | 
					    val serialFormatContentType: ContentType = standardKtorSerialFormatContentType
 | 
				
			||||||
@@ -97,6 +98,7 @@ class UnifiedRouter(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
val defaultUnifiedRouter = UnifiedRouter()
 | 
					val defaultUnifiedRouter = UnifiedRouter()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <T> ApplicationCall.unianswer(
 | 
					suspend fun <T> ApplicationCall.unianswer(
 | 
				
			||||||
    answerSerializer: SerializationStrategy<T>,
 | 
					    answerSerializer: SerializationStrategy<T>,
 | 
				
			||||||
    answer: T
 | 
					    answer: T
 | 
				
			||||||
@@ -107,6 +109,7 @@ suspend fun <T> ApplicationCall.unianswer(
 | 
				
			|||||||
    )
 | 
					    )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <T> ApplicationCall.uniload(
 | 
					suspend fun <T> ApplicationCall.uniload(
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>
 | 
					    deserializer: DeserializationStrategy<T>
 | 
				
			||||||
) = safely {
 | 
					) = safely {
 | 
				
			||||||
@@ -143,6 +146,7 @@ suspend fun ApplicationCall.uniloadMultipart(
 | 
				
			|||||||
    resultInput ?: error("Bytes has not been received")
 | 
					    resultInput ?: error("Bytes has not been received")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <T> ApplicationCall.uniloadMultipart(
 | 
					suspend fun <T> ApplicationCall.uniloadMultipart(
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>,
 | 
					    deserializer: DeserializationStrategy<T>,
 | 
				
			||||||
    onFormItem: (PartData.FormItem) -> Unit = {},
 | 
					    onFormItem: (PartData.FormItem) -> Unit = {},
 | 
				
			||||||
@@ -168,6 +172,7 @@ suspend fun <T> ApplicationCall.uniloadMultipart(
 | 
				
			|||||||
    return resultInput to (completeData.dataOrNull().let { it as T })
 | 
					    return resultInput to (completeData.dataOrNull().let { it as T })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <T> ApplicationCall.uniloadMultipartFile(
 | 
					suspend fun <T> ApplicationCall.uniloadMultipartFile(
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>,
 | 
					    deserializer: DeserializationStrategy<T>,
 | 
				
			||||||
    onFormItem: (PartData.FormItem) -> Unit = {},
 | 
					    onFormItem: (PartData.FormItem) -> Unit = {},
 | 
				
			||||||
@@ -281,6 +286,7 @@ suspend fun ApplicationCall.getQueryParameterOrSendError(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
fun <T> ApplicationCall.decodeUrlQueryValue(
 | 
					fun <T> ApplicationCall.decodeUrlQueryValue(
 | 
				
			||||||
    field: String,
 | 
					    field: String,
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>
 | 
					    deserializer: DeserializationStrategy<T>
 | 
				
			||||||
@@ -291,6 +297,7 @@ fun <T> ApplicationCall.decodeUrlQueryValue(
 | 
				
			|||||||
    )
 | 
					    )
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
 | 
				
			||||||
suspend fun <T> ApplicationCall.decodeUrlQueryValueOrSendError(
 | 
					suspend fun <T> ApplicationCall.decodeUrlQueryValueOrSendError(
 | 
				
			||||||
    field: String,
 | 
					    field: String,
 | 
				
			||||||
    deserializer: DeserializationStrategy<T>
 | 
					    deserializer: DeserializationStrategy<T>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Replaced", ReplaceWith("KVCache", "dev.inmo.micro_utils.repos.cache.cache.KVCache"))
 | 
					 | 
				
			||||||
typealias KVCache<K, V> = dev.inmo.micro_utils.repos.cache.cache.KVCache<K, V>
 | 
					 | 
				
			||||||
@Deprecated("Replaced", ReplaceWith("SimpleKVCache", "dev.inmo.micro_utils.repos.cache.cache.SimpleKVCache"))
 | 
					 | 
				
			||||||
typealias SimpleKVCache<K, V> = dev.inmo.micro_utils.repos.cache.cache.SimpleKVCache<K, V>
 | 
					 | 
				
			||||||
@@ -6,8 +6,6 @@ import dev.inmo.micro_utils.repos.*
 | 
				
			|||||||
import kotlinx.coroutines.flow.Flow
 | 
					import kotlinx.coroutines.flow.Flow
 | 
				
			||||||
import kotlinx.coroutines.flow.map
 | 
					import kotlinx.coroutines.flow.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperReadKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperReadKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias MapperReadStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
open class MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: ReadKeyValueRepo<ToKey, ToValue>,
 | 
					    private val to: ReadKeyValueRepo<ToKey, ToValue>,
 | 
				
			||||||
    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
				
			||||||
@@ -85,8 +83,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
 | 
				
			|||||||
    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
					    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperWriteKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperWriteKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias MapperWriteStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
open class MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: WriteKeyValueRepo<ToKey, ToValue>,
 | 
					    private val to: WriteKeyValueRepo<ToKey, ToValue>,
 | 
				
			||||||
    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
				
			||||||
@@ -130,8 +126,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
 | 
				
			|||||||
    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
					    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias MapperStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
					@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
				
			||||||
open class MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: KeyValueRepo<ToKey, ToValue>,
 | 
					    private val to: KeyValueRepo<ToKey, ToValue>,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,8 +6,6 @@ import dev.inmo.micro_utils.repos.*
 | 
				
			|||||||
import kotlinx.coroutines.flow.Flow
 | 
					import kotlinx.coroutines.flow.Flow
 | 
				
			||||||
import kotlinx.coroutines.flow.map
 | 
					import kotlinx.coroutines.flow.map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperReadKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperReadKeyValuesRepo"))
 | 
					 | 
				
			||||||
typealias MapperReadOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
open class MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: ReadKeyValuesRepo<ToKey, ToValue>,
 | 
					    private val to: ReadKeyValuesRepo<ToKey, ToValue>,
 | 
				
			||||||
    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
				
			||||||
@@ -83,8 +81,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
 | 
				
			|||||||
    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
					    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperWriteKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperWriteKeyValuesRepo"))
 | 
					 | 
				
			||||||
typealias MapperWriteOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
open class MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: WriteKeyValuesRepo<ToKey, ToValue>,
 | 
					    private val to: WriteKeyValuesRepo<ToKey, ToValue>,
 | 
				
			||||||
    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					    mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
 | 
				
			||||||
@@ -136,8 +132,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
 | 
				
			|||||||
    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
					    mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapperKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperKeyValuesRepo"))
 | 
					 | 
				
			||||||
typealias MapperOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
 | 
					 | 
				
			||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
					@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
				
			||||||
open class MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
					open class MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
 | 
				
			||||||
    private val to: KeyValuesRepo<ToKey, ToValue>,
 | 
					    private val to: KeyValuesRepo<ToKey, ToValue>,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,9 +13,6 @@ import java.nio.file.StandardWatchEventKinds.*
 | 
				
			|||||||
private inline val String.isAbsolute
 | 
					private inline val String.isAbsolute
 | 
				
			||||||
    get() = startsWith(File.separator)
 | 
					    get() = startsWith(File.separator)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("FileReadKeyValueRepo", "dev.inmo.micro_utils.repos.FileReadKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias FileReadStandardKeyValueRepo = FileReadKeyValueRepo
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class FileReadKeyValueRepo(
 | 
					class FileReadKeyValueRepo(
 | 
				
			||||||
    private val folder: File
 | 
					    private val folder: File
 | 
				
			||||||
) : ReadKeyValueRepo<String, File> {
 | 
					) : ReadKeyValueRepo<String, File> {
 | 
				
			||||||
@@ -82,9 +79,6 @@ class FileReadKeyValueRepo(
 | 
				
			|||||||
    override suspend fun count(): Long = folder.list() ?.size ?.toLong() ?: 0L
 | 
					    override suspend fun count(): Long = folder.list() ?.size ?.toLong() ?: 0L
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("FileWriteKeyValueRepo", "dev.inmo.micro_utils.repos.FileWriteKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias FileWriteStandardKeyValueRepo = FileWriteKeyValueRepo
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Files watching will not correctly works on Android with version of API lower than API 26
 | 
					 * Files watching will not correctly works on Android with version of API lower than API 26
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -184,9 +178,6 @@ class FileWriteKeyValueRepo(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("FileKeyValueRepo", "dev.inmo.micro_utils.repos.FileKeyValueRepo"))
 | 
					 | 
				
			||||||
typealias FileStandardKeyValueRepo = FileKeyValueRepo
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Warning("Files watching will not correctly works on Android Platform with version of API lower than API 26")
 | 
					@Warning("Files watching will not correctly works on Android Platform with version of API lower than API 26")
 | 
				
			||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
					@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
				
			||||||
class FileKeyValueRepo(
 | 
					class FileKeyValueRepo(
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,12 +20,6 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
 | 
				
			|||||||
    protected val _newObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
 | 
					    protected val _newObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
 | 
				
			||||||
    protected val _updatedObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
 | 
					    protected val _updatedObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
 | 
				
			||||||
    protected val _deletedObjectsIdsFlow = MutableSharedFlow<IdType>(replyCacheInFlows, flowsChannelsSize)
 | 
					    protected val _deletedObjectsIdsFlow = MutableSharedFlow<IdType>(replyCacheInFlows, flowsChannelsSize)
 | 
				
			||||||
    @Deprecated("Renamed", ReplaceWith("_newObjectsFlow"))
 | 
					 | 
				
			||||||
    protected val newObjectsChannel = _newObjectsFlow
 | 
					 | 
				
			||||||
    @Deprecated("Renamed", ReplaceWith("_updatedObjectsFlow"))
 | 
					 | 
				
			||||||
    protected val updateObjectsChannel = _updatedObjectsFlow
 | 
					 | 
				
			||||||
    @Deprecated("Renamed", ReplaceWith("_deletedObjectsIdsFlow"))
 | 
					 | 
				
			||||||
    protected val deleteObjectsIdsChannel = _deletedObjectsIdsFlow
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    override val newObjectsFlow: Flow<ObjectType> = _newObjectsFlow.asSharedFlow()
 | 
					    override val newObjectsFlow: Flow<ObjectType> = _newObjectsFlow.asSharedFlow()
 | 
				
			||||||
    override val updatedObjectsFlow: Flow<ObjectType> = _updatedObjectsFlow.asSharedFlow()
 | 
					    override val updatedObjectsFlow: Flow<ObjectType> = _updatedObjectsFlow.asSharedFlow()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -87,6 +87,7 @@ class WriteMapKeyValueRepo<Key, Value>(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
				
			||||||
class MapKeyValueRepo<Key, Value>(
 | 
					class MapKeyValueRepo<Key, Value>(
 | 
				
			||||||
    private val map: MutableMap<Key, Value> = mutableMapOf()
 | 
					    private val map: MutableMap<Key, Value> = mutableMapOf()
 | 
				
			||||||
) : KeyValueRepo<Key, Value>,
 | 
					) : KeyValueRepo<Key, Value>,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,6 @@ import dev.inmo.micro_utils.pagination.utils.paginate
 | 
				
			|||||||
import dev.inmo.micro_utils.pagination.utils.reverse
 | 
					import dev.inmo.micro_utils.pagination.utils.reverse
 | 
				
			||||||
import kotlinx.coroutines.flow.*
 | 
					import kotlinx.coroutines.flow.*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapReadKeyValuesRepo", "dev.inmo.micro_utils.repos.MapReadKeyValuesRepo"))
 | 
					 | 
				
			||||||
typealias MapReadOneToManyKeyValueRepo<Key, Value> = MapReadKeyValuesRepo<Key, Value>
 | 
					 | 
				
			||||||
class MapReadKeyValuesRepo<Key, Value>(
 | 
					class MapReadKeyValuesRepo<Key, Value>(
 | 
				
			||||||
    private val map: Map<Key, List<Value>> = emptyMap()
 | 
					    private val map: Map<Key, List<Value>> = emptyMap()
 | 
				
			||||||
) : ReadKeyValuesRepo<Key, Value> {
 | 
					) : ReadKeyValuesRepo<Key, Value> {
 | 
				
			||||||
@@ -55,8 +53,6 @@ class MapReadKeyValuesRepo<Key, Value>(
 | 
				
			|||||||
    override suspend fun count(): Long = map.size.toLong()
 | 
					    override suspend fun count(): Long = map.size.toLong()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapWriteKeyValuesRepo", "dev.inmo.micro_utils.repos.MapWriteKeyValuesRepo"))
 | 
					 | 
				
			||||||
typealias MapWriteOneToManyKeyValueRepo<Key, Value> = MapWriteKeyValuesRepo<Key, Value>
 | 
					 | 
				
			||||||
class MapWriteKeyValuesRepo<Key, Value>(
 | 
					class MapWriteKeyValuesRepo<Key, Value>(
 | 
				
			||||||
    private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
 | 
					    private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
 | 
				
			||||||
) : WriteKeyValuesRepo<Key, Value> {
 | 
					) : WriteKeyValuesRepo<Key, Value> {
 | 
				
			||||||
@@ -102,8 +98,7 @@ class MapWriteKeyValuesRepo<Key, Value>(
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("MapKeyValuesRepo", "dev.inmo.micro_utils.repos.MapKeyValuesRepo"))
 | 
					@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
				
			||||||
typealias MapOneToManyKeyValueRepo1<Key, Value> = MapKeyValuesRepo<Key, Value>
 | 
					 | 
				
			||||||
class MapKeyValuesRepo<Key, Value>(
 | 
					class MapKeyValuesRepo<Key, Value>(
 | 
				
			||||||
    private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
 | 
					    private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
 | 
				
			||||||
) : KeyValuesRepo<Key, Value>,
 | 
					) : KeyValuesRepo<Key, Value>,
 | 
				
			||||||
@@ -113,6 +108,3 @@ class MapKeyValuesRepo<Key, Value>(
 | 
				
			|||||||
fun <K, V> MutableMap<K, List<V>>.asKeyValuesRepo(): KeyValuesRepo<K, V> = MapKeyValuesRepo(
 | 
					fun <K, V> MutableMap<K, List<V>>.asKeyValuesRepo(): KeyValuesRepo<K, V> = MapKeyValuesRepo(
 | 
				
			||||||
    map { (k, v) -> k to v.toMutableList() }.toMap().toMutableMap()
 | 
					    map { (k, v) -> k to v.toMutableList() }.toMap().toMutableMap()
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Renamed", ReplaceWith("asKeyValuesRepo", "dev.inmo.micro_utils.repos.asKeyValuesRepo"))
 | 
					 | 
				
			||||||
fun <K, V> MutableMap<K, List<V>>.asOneToManyKeyValueRepo(): KeyValuesRepo<K, V> = asKeyValuesRepo()
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,65 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.pagination.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ReadCRUDRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.countRouting
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.crud.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.idParameterName
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.serializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Use KtorReadCRUDRepoClient instead")
 | 
					 | 
				
			||||||
class KtorReadStandardCrudRepo<ObjectType, IdType> (
 | 
					 | 
				
			||||||
    private val baseUrl: String,
 | 
					 | 
				
			||||||
    private val unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private val objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
    private val objectsSerializerNullable: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
    private val idsSerializer: KSerializer<IdType>
 | 
					 | 
				
			||||||
) : ReadCRUDRepo<ObjectType, IdType> {
 | 
					 | 
				
			||||||
    private val paginationResultSerializer = PaginationResult.serializer(objectsSerializer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
        objectsSerializerNullable: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
        idsSerializer: KSerializer<IdType>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (
 | 
					 | 
				
			||||||
        baseUrl, UnifiedRequester(client, serialFormat), objectsSerializer, objectsSerializerNullable, idsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun getByPagination(pagination: Pagination): PaginationResult<ObjectType> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, getByPaginationRouting, pagination.asUrlQueryParts),
 | 
					 | 
				
			||||||
        paginationResultSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun getById(id: IdType): ObjectType? = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            getByIdRouting,
 | 
					 | 
				
			||||||
            idParameterName to unifiedRequester.encodeUrlQueryValue(idsSerializer, id)
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        objectsSerializerNullable
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun contains(id: IdType): Boolean = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            containsRouting,
 | 
					 | 
				
			||||||
            idParameterName to unifiedRequester.encodeUrlQueryValue(idsSerializer, id)
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Boolean.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun count(): Long = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            countRouting
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Long.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,47 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Use KtorCRUDRepoClient instead")
 | 
					 | 
				
			||||||
class KtorStandardCrudRepo<ObjectType, IdType, InputValue> (
 | 
					 | 
				
			||||||
    baseUrl: String,
 | 
					 | 
				
			||||||
    baseSubpart: String,
 | 
					 | 
				
			||||||
    unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
    objectsNullableSerializer: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
    inputsSerializer: KSerializer<InputValue>,
 | 
					 | 
				
			||||||
    idsSerializer: KSerializer<IdType>
 | 
					 | 
				
			||||||
) : CRUDRepo<ObjectType, IdType, InputValue>,
 | 
					 | 
				
			||||||
    ReadCRUDRepo<ObjectType, IdType> by KtorReadStandardCrudRepo(
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        objectsSerializer,
 | 
					 | 
				
			||||||
        objectsNullableSerializer,
 | 
					 | 
				
			||||||
        idsSerializer
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    WriteCRUDRepo<ObjectType, IdType, InputValue> by KtorWriteStandardCrudRepo(
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        objectsSerializer,
 | 
					 | 
				
			||||||
        objectsNullableSerializer,
 | 
					 | 
				
			||||||
        inputsSerializer,
 | 
					 | 
				
			||||||
        idsSerializer
 | 
					 | 
				
			||||||
    ) {
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        baseSubpart: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
        objectsNullableSerializer: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
        inputsSerializer: KSerializer<InputValue>,
 | 
					 | 
				
			||||||
        idsSerializer: KSerializer<IdType>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this(
 | 
					 | 
				
			||||||
        baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), objectsSerializer, objectsNullableSerializer, inputsSerializer, idsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,80 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.UpdatedValuePair
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.WriteCRUDRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.crud.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.coroutines.flow.Flow
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Use KtorWriteCRUDRepoClient instead")
 | 
					 | 
				
			||||||
class KtorWriteStandardCrudRepo<ObjectType, IdType, InputValue> (
 | 
					 | 
				
			||||||
    private val baseUrl: String,
 | 
					 | 
				
			||||||
    private val unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private val objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
    private val objectsNullableSerializer: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
    private val inputsSerializer: KSerializer<InputValue>,
 | 
					 | 
				
			||||||
    private val idsSerializer: KSerializer<IdType>
 | 
					 | 
				
			||||||
) : WriteCRUDRepo<ObjectType, IdType, InputValue> {
 | 
					 | 
				
			||||||
    private val listObjectsSerializer = ListSerializer(objectsSerializer)
 | 
					 | 
				
			||||||
    private val listInputSerializer = ListSerializer(inputsSerializer)
 | 
					 | 
				
			||||||
    private val listIdsSerializer = ListSerializer(idsSerializer)
 | 
					 | 
				
			||||||
    private val inputUpdateSerializer = PairSerializer(
 | 
					 | 
				
			||||||
        idsSerializer,
 | 
					 | 
				
			||||||
        inputsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    private val listInputUpdateSerializer = ListSerializer(inputUpdateSerializer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        objectsSerializer: KSerializer<ObjectType>,
 | 
					 | 
				
			||||||
        objectsSerializerNullable: KSerializer<ObjectType?>,
 | 
					 | 
				
			||||||
        inputsSerializer: KSerializer<InputValue>,
 | 
					 | 
				
			||||||
        idsSerializer: KSerializer<IdType>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (
 | 
					 | 
				
			||||||
        baseUrl, UnifiedRequester(client, serialFormat), objectsSerializer, objectsSerializerNullable, inputsSerializer, idsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override val newObjectsFlow: Flow<ObjectType> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, newObjectsFlowRouting),
 | 
					 | 
				
			||||||
        deserializer = objectsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    override val updatedObjectsFlow: Flow<ObjectType> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, updatedObjectsFlowRouting),
 | 
					 | 
				
			||||||
        deserializer = objectsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    override val deletedObjectsIdsFlow: Flow<IdType> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, deletedObjectsIdsFlowRouting),
 | 
					 | 
				
			||||||
        deserializer = idsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun create(values: List<InputValue>): List<ObjectType> = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, createRouting),
 | 
					 | 
				
			||||||
        Pair(listInputSerializer, values),
 | 
					 | 
				
			||||||
        listObjectsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun update(id: IdType, value: InputValue): ObjectType? = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, updateRouting),
 | 
					 | 
				
			||||||
        Pair(inputUpdateSerializer, id to value),
 | 
					 | 
				
			||||||
        objectsNullableSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun update(values: List<UpdatedValuePair<IdType, InputValue>>): List<ObjectType> = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, updateManyRouting),
 | 
					 | 
				
			||||||
        Pair(listInputUpdateSerializer, values),
 | 
					 | 
				
			||||||
        listObjectsSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun deleteById(ids: List<IdType>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, deleteByIdRouting),
 | 
					 | 
				
			||||||
        Pair(listIdsSerializer, ids),
 | 
					 | 
				
			||||||
        Unit.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,99 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.pagination.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ReadKeyValueRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.containsRoute
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.countRoute
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.keyParameterName
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.reversedParameterName
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.*
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.serializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Replaced with KtorReadKeyValueRepoClient")
 | 
					 | 
				
			||||||
class KtorReadStandardKeyValueRepo<Key, Value> (
 | 
					 | 
				
			||||||
    private val baseUrl: String,
 | 
					 | 
				
			||||||
    private val unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private val keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
    private val valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
    private val valueNullableSerializer: KSerializer<Value?>
 | 
					 | 
				
			||||||
) : ReadKeyValueRepo<Key, Value> {
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
        valueNullableSerializer: KSerializer<Value?>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (
 | 
					 | 
				
			||||||
        baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer, valueNullableSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun get(k: Key): Value? = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            getRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k)
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        valueNullableSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            valuesRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        PaginationResult.serializer(valueSerializer)
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            keysRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        PaginationResult.serializer(keySerializer)
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            keysRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        PaginationResult.serializer(keySerializer)
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun contains(key: Key): Boolean = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            containsRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, key)
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Boolean.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun count(): Long = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            countRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Long.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,42 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Replaced with KtorKeyValueRepoClient")
 | 
					 | 
				
			||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
 | 
					 | 
				
			||||||
class KtorStandartKeyValueRepo<K, V> (
 | 
					 | 
				
			||||||
    baseUrl: String,
 | 
					 | 
				
			||||||
    baseSubpart: String,
 | 
					 | 
				
			||||||
    unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    keySerializer: KSerializer<K>,
 | 
					 | 
				
			||||||
    valueSerializer: KSerializer<V>,
 | 
					 | 
				
			||||||
    valueNullableSerializer: KSerializer<V?>
 | 
					 | 
				
			||||||
) : KeyValueRepo<K, V>,
 | 
					 | 
				
			||||||
    ReadKeyValueRepo<K, V> by KtorReadStandardKeyValueRepo(
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        keySerializer,
 | 
					 | 
				
			||||||
        valueSerializer,
 | 
					 | 
				
			||||||
        valueNullableSerializer
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    WriteKeyValueRepo<K, V> by KtorWriteStandardKeyValueRepo(
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        keySerializer,
 | 
					 | 
				
			||||||
        valueSerializer
 | 
					 | 
				
			||||||
    ) {
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        baseSubpart: String,
 | 
					 | 
				
			||||||
        client: HttpClient = HttpClient(),
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<K>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<V>,
 | 
					 | 
				
			||||||
        valueNullableSerializer: KSerializer<V?>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this(baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer, valueNullableSerializer)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,69 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.WriteKeyValueRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.coroutines.flow.Flow
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Replaced with KtorWriteKeyValueRepoClient")
 | 
					 | 
				
			||||||
class KtorWriteStandardKeyValueRepo<K, V> (
 | 
					 | 
				
			||||||
    private var baseUrl: String,
 | 
					 | 
				
			||||||
    private var unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private var keySerializer: KSerializer<K>,
 | 
					 | 
				
			||||||
    private var valueSerializer: KSerializer<V>,
 | 
					 | 
				
			||||||
) : WriteKeyValueRepo<K, V> {
 | 
					 | 
				
			||||||
    private val keyValueMapSerializer = MapSerializer(keySerializer, valueSerializer)
 | 
					 | 
				
			||||||
    private val keysListSerializer = ListSerializer(keySerializer)
 | 
					 | 
				
			||||||
    private val valuesListSerializer = ListSerializer(valueSerializer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<K>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<V>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (
 | 
					 | 
				
			||||||
        baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override val onNewValue: Flow<Pair<K, V>> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, onNewValueRoute),
 | 
					 | 
				
			||||||
        deserializer = PairSerializer(keySerializer, valueSerializer)
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override val onValueRemoved: Flow<K> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, onValueRemovedRoute),
 | 
					 | 
				
			||||||
        deserializer = keySerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun set(toSet: Map<K, V>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            setRoute
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keyValueMapSerializer, toSet),
 | 
					 | 
				
			||||||
        Unit.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun unset(toUnset: List<K>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            unsetRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keysListSerializer, toUnset),
 | 
					 | 
				
			||||||
        Unit.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun unsetWithValues(toUnset: List<V>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            unsetWithValuesRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(valuesListSerializer, toUnset),
 | 
					 | 
				
			||||||
        Unit.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,38 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Should be replaced with KtorKeyValuesRepoClient")
 | 
					 | 
				
			||||||
class KtorOneToManyKeyValueRepo<Key, Value>(
 | 
					 | 
				
			||||||
    baseUrl: String,
 | 
					 | 
				
			||||||
    baseSubpart: String,
 | 
					 | 
				
			||||||
    unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
    valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
) : KeyValuesRepo<Key, Value>,
 | 
					 | 
				
			||||||
    ReadKeyValuesRepo<Key, Value> by KtorReadOneToManyKeyValueRepo<Key, Value> (
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        keySerializer,
 | 
					 | 
				
			||||||
        valueSerializer,
 | 
					 | 
				
			||||||
    ),
 | 
					 | 
				
			||||||
    WriteKeyValuesRepo<Key, Value> by KtorWriteOneToManyKeyValueRepo<Key, Value> (
 | 
					 | 
				
			||||||
        "$baseUrl/$baseSubpart",
 | 
					 | 
				
			||||||
        unifiedRequester,
 | 
					 | 
				
			||||||
        keySerializer,
 | 
					 | 
				
			||||||
        valueSerializer,
 | 
					 | 
				
			||||||
    ) {
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        baseSubpart: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,108 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.pagination.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ReadKeyValuesRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.keyParameterName
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.valueParameterName
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.serializer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Should be replaced with KtorReadKeyValuesRepoClient")
 | 
					 | 
				
			||||||
class KtorReadOneToManyKeyValueRepo<Key, Value> (
 | 
					 | 
				
			||||||
    private val baseUrl: String,
 | 
					 | 
				
			||||||
    private val unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private val keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
    private val valueSerializer: KSerializer<Value>
 | 
					 | 
				
			||||||
) : ReadKeyValuesRepo<Key, Value> {
 | 
					 | 
				
			||||||
    private val paginationValueResultSerializer = PaginationResult.serializer(valueSerializer)
 | 
					 | 
				
			||||||
    private val paginationKeyResultSerializer = PaginationResult.serializer(keySerializer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun get(k: Key, pagination: Pagination, reversed: Boolean): PaginationResult<Value> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            getRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k),
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        paginationValueResultSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            keysRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        paginationKeyResultSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            keysRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
 | 
					 | 
				
			||||||
                reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
 | 
					 | 
				
			||||||
            ) + pagination.asUrlQueryParts
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        paginationKeyResultSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun contains(k: Key): Boolean = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            containsByKeyRoute,
 | 
					 | 
				
			||||||
            mapOf(keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k))
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Boolean.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun contains(k: Key, v: Value): Boolean = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            containsByKeyValueRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k),
 | 
					 | 
				
			||||||
                valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Boolean.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun count(k: Key): Long = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            countByKeyRoute,
 | 
					 | 
				
			||||||
            mapOf(
 | 
					 | 
				
			||||||
                keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k)
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Long.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun count(): Long = unifiedRequester.uniget(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            countRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Long.serializer()
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,88 +0,0 @@
 | 
				
			|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.client.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.ktor.common.*
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.WriteKeyValuesRepo
 | 
					 | 
				
			||||||
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.*
 | 
					 | 
				
			||||||
import io.ktor.client.HttpClient
 | 
					 | 
				
			||||||
import kotlinx.coroutines.flow.Flow
 | 
					 | 
				
			||||||
import kotlinx.serialization.KSerializer
 | 
					 | 
				
			||||||
import kotlinx.serialization.builtins.*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Deprecated("Should be replaced with KtorWriteKeyValuesRepoClient")
 | 
					 | 
				
			||||||
class KtorWriteOneToManyKeyValueRepo<Key, Value> (
 | 
					 | 
				
			||||||
    private val baseUrl: String,
 | 
					 | 
				
			||||||
    private val unifiedRequester: UnifiedRequester,
 | 
					 | 
				
			||||||
    private val keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
    private val valueSerializer: KSerializer<Value>
 | 
					 | 
				
			||||||
) : WriteKeyValuesRepo<Key, Value> {
 | 
					 | 
				
			||||||
    private val keyValueSerializer = PairSerializer(keySerializer, valueSerializer)
 | 
					 | 
				
			||||||
    private val keyValueMapSerializer = MapSerializer(keySerializer, ListSerializer(valueSerializer))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor(
 | 
					 | 
				
			||||||
        baseUrl: String,
 | 
					 | 
				
			||||||
        client: HttpClient,
 | 
					 | 
				
			||||||
        keySerializer: KSerializer<Key>,
 | 
					 | 
				
			||||||
        valueSerializer: KSerializer<Value>,
 | 
					 | 
				
			||||||
        serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
 | 
					 | 
				
			||||||
    ) : this (
 | 
					 | 
				
			||||||
        baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override val onNewValue: Flow<Pair<Key, Value>> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, onNewValueRoute),
 | 
					 | 
				
			||||||
        deserializer = keyValueSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    override val onValueRemoved: Flow<Pair<Key, Value>> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, onValueRemovedRoute),
 | 
					 | 
				
			||||||
        deserializer = keyValueSerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    override val onDataCleared: Flow<Key> = unifiedRequester.createStandardWebsocketFlow(
 | 
					 | 
				
			||||||
        buildStandardUrl(baseUrl, onDataClearedRoute),
 | 
					 | 
				
			||||||
        deserializer = keySerializer
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun remove(toRemove: Map<Key, List<Value>>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            removeRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keyValueMapSerializer, toRemove),
 | 
					 | 
				
			||||||
        Unit.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun add(toAdd: Map<Key, List<Value>>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            addRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keyValueMapSerializer, toAdd),
 | 
					 | 
				
			||||||
        Unit.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    override suspend fun clear(k: Key) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            clearRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keySerializer, k),
 | 
					 | 
				
			||||||
        Unit.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun clearWithValue(v: Value) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            clearWithValueRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(valueSerializer, v),
 | 
					 | 
				
			||||||
        Unit.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    override suspend fun set(toSet: Map<Key, List<Value>>) = unifiedRequester.unipost(
 | 
					 | 
				
			||||||
        buildStandardUrl(
 | 
					 | 
				
			||||||
            baseUrl,
 | 
					 | 
				
			||||||
            setRoute,
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
        Pair(keyValueMapSerializer, toSet),
 | 
					 | 
				
			||||||
        Unit.serializer(),
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user