summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-08-03 15:09:58 +0900
committerSho Sakuma <me@m1sk9.dev>2026-08-05 01:15:29 +0900
commitfd56ebaa1dc2cfa8f834edb06395e8fc02375d1d (patch)
tree7feb02881ca767e9180aafd6478be9a0d5c363af
parentf4bff879ac2f4323011d41e4f7ee85a9695515a5 (diff)
downloadLunaticChat-fd56ebaa1dc2cfa8f834edb06395e8fc02375d1d.tar.gz
LunaticChat-fd56ebaa1dc2cfa8f834edb06395e8fc02375d1d.tar.bz2
LunaticChat-fd56ebaa1dc2cfa8f834edb06395e8fc02375d1d.zip
refactor: move romaji conversion out of engine
Closes #259. engine exposed ktor through api(), so both platforms inherited the client and its CIO engine. The only thing in engine that used ktor was GoogleIMEClient, and the only module that used GoogleIMEClient was platform-paper - Velocity was shipping roughly six megabytes of HTTP client to support a Paper-only feature. Same story for kotlinx-coroutines-core, which Velocity does not use at all. Romaji conversion is a Paper feature, so the converter package now lives in platform-paper alongside the ConversionCache and RomanjiConverter that were already there. engine keeps kotlinx-serialization on api(), which is genuine shared surface: the plugin messaging protocol is built on it. The velocity shadow jar goes from 7,618,405 to 2,769,395 bytes, and no longer contains io/ktor at all. CacheData's tests were sitting inside engine's SettingsDataClassesTest, which is unrelated to settings; they move with the class. Co-Authored-By: Claude <noreply@anthropic.com>
-rw-r--r--engine/build.gradle.kts6
-rw-r--r--engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/settings/SettingsDataClassesTest.kt25
-rw-r--r--platform-paper/build.gradle.kts3
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheData.kt (renamed from engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/CacheData.kt)2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt1
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/GoogleIMEClient.kt (renamed from engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/GoogleIMEClient.kt)2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverter.kt (renamed from engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverter.kt)2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt2
-rw-r--r--platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheDataTest.kt31
-rw-r--r--platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverterTest.kt (renamed from engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt)2
-rw-r--r--platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverterTest.kt2
12 files changed, 42 insertions, 38 deletions
diff --git a/engine/build.gradle.kts b/engine/build.gradle.kts
index bcb7eb6..2d36116 100644
--- a/engine/build.gradle.kts
+++ b/engine/build.gradle.kts
@@ -4,11 +4,9 @@ plugins {
}
dependencies {
- // Core dependencies (exposed to platform modules via api())
+ // Exposed to platform modules via api(): the plugin messaging protocol is built on it, so
+ // both platforms need it on their compile and runtime classpath.
api("org.jetbrains.kotlinx:kotlinx-serialization-json:1.11.0")
- api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0")
- api("io.ktor:ktor-client-core:3.5.2")
- api("io.ktor:ktor-client-cio:3.5.2")
// Adventure API (provided by platform implementations)
// Matches what every supported platform ships: Paper 26.2 and Velocity 4.x both bundle 5.2.0.
diff --git a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/settings/SettingsDataClassesTest.kt b/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/settings/SettingsDataClassesTest.kt
index a7cc2ee..bd337ff 100644
--- a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/settings/SettingsDataClassesTest.kt
+++ b/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/settings/SettingsDataClassesTest.kt
@@ -1,6 +1,5 @@
package dev.m1sk9.lunaticChat.engine.settings
-import dev.m1sk9.lunaticChat.engine.converter.CacheData
import kotlinx.serialization.json.Json
import java.util.UUID
import kotlin.test.Test
@@ -104,28 +103,4 @@ class SettingsDataClassesTest {
val serialized = json.encodeToString(PlayerSettingsData.serializer(), data)
assertTrue(serialized.contains(testUUID.toString()))
}
-
- // --- CacheData ---
-
- @Test
- fun `CacheData should store version and entries`() {
- val data = CacheData(version = "1.0", entries = mapOf("hello" to "こんにちは"))
- assertEquals("1.0", data.version)
- assertEquals("こんにちは", data.entries["hello"])
- }
-
- @Test
- fun `CacheData serialization round-trip should preserve all fields`() {
- val original =
- CacheData(
- version = "2.0",
- entries = mapOf("hello" to "こんにちは", "world" to "世界"),
- )
-
- val serialized = json.encodeToString(CacheData.serializer(), original)
- val deserialized = json.decodeFromString(CacheData.serializer(), serialized)
-
- assertEquals(original.version, deserialized.version)
- assertEquals(original.entries, deserialized.entries)
- }
}
diff --git a/platform-paper/build.gradle.kts b/platform-paper/build.gradle.kts
index a846ed9..95fe21a 100644
--- a/platform-paper/build.gradle.kts
+++ b/platform-paper/build.gradle.kts
@@ -20,6 +20,9 @@ dependencies {
// Paper-specific dependencies
compileOnly("io.papermc.paper:paper-api:26.2.build.92-stable")
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0")
+ implementation("io.ktor:ktor-client-core:3.5.2") // Google IME client, update check
+ implementation("io.ktor:ktor-client-cio:3.5.2")
implementation("com.charleskorn.kaml:kaml:0.104.0") // YAML configuration
implementation("org.jetbrains.kotlin:kotlin-reflect:2.4.10") // Annotation processing
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt
index 5ec2e0a..9f1de87 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/ServiceInitializer.kt
@@ -1,6 +1,5 @@
package dev.m1sk9.lunaticChat.paper
-import dev.m1sk9.lunaticChat.engine.converter.GoogleIMEClient
import dev.m1sk9.lunaticChat.paper.chat.channel.ChannelManager
import dev.m1sk9.lunaticChat.paper.chat.channel.ChannelMembershipManager
import dev.m1sk9.lunaticChat.paper.chat.channel.ChannelMessageLogger
@@ -10,6 +9,7 @@ import dev.m1sk9.lunaticChat.paper.chat.handler.ChannelNotificationHandler
import dev.m1sk9.lunaticChat.paper.chat.handler.DirectMessageHandler
import dev.m1sk9.lunaticChat.paper.config.LunaticChatConfiguration
import dev.m1sk9.lunaticChat.paper.converter.ConversionCache
+import dev.m1sk9.lunaticChat.paper.converter.GoogleIMEClient
import dev.m1sk9.lunaticChat.paper.converter.RomanjiConverter
import dev.m1sk9.lunaticChat.paper.i18n.LanguageManager
import dev.m1sk9.lunaticChat.paper.settings.PlayerSettingsManager
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/CacheData.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheData.kt
index 1f335b4..06bf3f0 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/CacheData.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheData.kt
@@ -1,4 +1,4 @@
-package dev.m1sk9.lunaticChat.engine.converter
+package dev.m1sk9.lunaticChat.paper.converter
import kotlinx.serialization.Serializable
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt
index c550f09..cba62af 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/ConversionCache.kt
@@ -1,6 +1,5 @@
package dev.m1sk9.lunaticChat.paper.converter
-import dev.m1sk9.lunaticChat.engine.converter.CacheData
import dev.m1sk9.lunaticChat.paper.writeTextAtomically
import kotlinx.serialization.json.Json
import java.nio.file.Path
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/GoogleIMEClient.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/GoogleIMEClient.kt
index 4a23bc7..0689ad4 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/GoogleIMEClient.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/GoogleIMEClient.kt
@@ -1,4 +1,4 @@
-package dev.m1sk9.lunaticChat.engine.converter
+package dev.m1sk9.lunaticChat.paper.converter
import io.ktor.client.HttpClient
import io.ktor.client.call.body
diff --git a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverter.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverter.kt
index bdbdf69..544eea7 100644
--- a/engine/src/main/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverter.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverter.kt
@@ -1,4 +1,4 @@
-package dev.m1sk9.lunaticChat.engine.converter
+package dev.m1sk9.lunaticChat.paper.converter
/**
* Converts romanji text to hiragana using Trie data structure.
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
index 530d3dc..100aeb3 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
@@ -1,7 +1,5 @@
package dev.m1sk9.lunaticChat.paper.converter
-import dev.m1sk9.lunaticChat.engine.converter.GoogleIMEClient
-import dev.m1sk9.lunaticChat.engine.converter.KanaConverter
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
diff --git a/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheDataTest.kt b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheDataTest.kt
new file mode 100644
index 0000000..f44dd10
--- /dev/null
+++ b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/CacheDataTest.kt
@@ -0,0 +1,31 @@
+package dev.m1sk9.lunaticChat.paper.converter
+
+import kotlinx.serialization.json.Json
+import kotlin.test.Test
+import kotlin.test.assertEquals
+
+class CacheDataTest {
+ private val json = Json
+
+ @Test
+ fun `CacheData should store version and entries`() {
+ val data = CacheData(version = "1.0", entries = mapOf("hello" to "こんにちは"))
+ assertEquals("1.0", data.version)
+ assertEquals("こんにちは", data.entries["hello"])
+ }
+
+ @Test
+ fun `CacheData serialization round-trip should preserve all fields`() {
+ val original =
+ CacheData(
+ version = "2.0",
+ entries = mapOf("hello" to "こんにちは", "world" to "世界"),
+ )
+
+ val serialized = json.encodeToString(CacheData.serializer(), original)
+ val deserialized = json.decodeFromString(CacheData.serializer(), serialized)
+
+ assertEquals(original.version, deserialized.version)
+ assertEquals(original.entries, deserialized.entries)
+ }
+}
diff --git a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverterTest.kt
index 5ba7f0e..798772d 100644
--- a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt
+++ b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/KanaConverterTest.kt
@@ -1,4 +1,4 @@
-package dev.m1sk9.lunaticChat.engine.converter
+package dev.m1sk9.lunaticChat.paper.converter
import kotlin.test.Test
import kotlin.test.assertEquals
diff --git a/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverterTest.kt b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverterTest.kt
index eba2c54..c8fe680 100644
--- a/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverterTest.kt
+++ b/platform-paper/src/test/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverterTest.kt
@@ -1,7 +1,7 @@
package dev.m1sk9.lunaticChat.paper.converter
-import dev.m1sk9.lunaticChat.engine.converter.GoogleIMEClient
import dev.m1sk9.lunaticChat.paper.TestUtils
+import dev.m1sk9.lunaticChat.paper.converter.GoogleIMEClient
import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.every