mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-09-03 15:19:44 +00:00
more annotations to god of annotations
This commit is contained in:
@@ -1,13 +1,17 @@
|
||||
package dev.inmo.micro_utils.mime_types
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlin.js.JsExport
|
||||
|
||||
@JsExport
|
||||
@Serializable(MimeTypeSerializer::class)
|
||||
interface MimeType {
|
||||
val raw: String
|
||||
}
|
||||
@JsExport
|
||||
data class CustomMimeType(override val raw: String) : MimeType
|
||||
|
||||
@JsExport
|
||||
@Serializable(MimeTypeSerializer::class)
|
||||
sealed class KnownMimeTypes(override val raw: String) : MimeType {
|
||||
object Any : MimeType, KnownMimeTypes("*/*")
|
||||
@@ -2144,10 +2148,12 @@ internal val knownMimeTypes: Set<MimeType> = setOf(
|
||||
KnownMimeTypes.XConference.XCooltalk,
|
||||
)
|
||||
|
||||
@JsExport
|
||||
val knownMimeTypesMap by lazy {
|
||||
knownMimeTypes.associateBy { it.raw }
|
||||
}
|
||||
|
||||
@JsExport
|
||||
fun findBuiltinMimeType(from: String): MimeType? {
|
||||
return knownMimeTypesMap[from]
|
||||
}
|
||||
|
@@ -5,18 +5,22 @@ import kotlinx.serialization.Serializer
|
||||
import kotlinx.serialization.descriptors.*
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlin.js.JsExport
|
||||
|
||||
private val mimesCache = mutableMapOf<String, MimeType>().also {
|
||||
knownMimeTypes.forEach { mimeType -> it[mimeType.raw] = mimeType }
|
||||
}
|
||||
|
||||
@JsExport
|
||||
fun mimeType(raw: String) = mimesCache.getOrPut(raw) {
|
||||
parseMimeType(raw)
|
||||
}
|
||||
|
||||
@JsExport
|
||||
internal fun parseMimeType(raw: String): MimeType = CustomMimeType(raw)
|
||||
|
||||
@Serializer(MimeType::class)
|
||||
@JsExport
|
||||
object MimeTypeSerializer : KSerializer<MimeType> {
|
||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("mimeType", PrimitiveKind.STRING)
|
||||
|
||||
|
Reference in New Issue
Block a user