From 6cf8a58c7c642a5b892dd4dad56334d78cc0894d Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 23 Sep 2020 09:41:52 +0800 Subject: [PATCH 01/11] Set version to 2.0-M1 --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 4c41aa563..1f0ac962f 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -9,7 +9,7 @@ object Versions { object Mirai { - const val version = "1.3.1" + const val version = "2.0-M1" } object Kotlin { From 9ced99efe149c5db02b3162b392ff2757a80b916 Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 23 Sep 2020 09:42:07 +0800 Subject: [PATCH 02/11] Bump BlockingBridge version --- buildSrc/src/main/kotlin/Versions.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 1f0ac962f..c847df1d7 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -26,7 +26,7 @@ object Versions { const val dokka = "0.10.1" } - val blockingBridge = "1.0.5" + val blockingBridge = "1.1.0" object Android { const val androidGradlePlugin = "3.5.3" From b8bb129ac108fc8fa73a28a0a36e035ee46bd789 Mon Sep 17 00:00:00 2001 From: Him188 Date: Wed, 23 Sep 2020 09:49:49 +0800 Subject: [PATCH 03/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b92b21c30..bab6164fc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,6 +16,12 @@ mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 m ### 能做什么? +#### 分支 + +- `master`: 最新稳定版 +- `1.x`: 1.x 现有版本的开发 +- `dev`: 2.0 重构版本的开发 + **请基于 `master` 分支进行文档修改; 基于 `dev` 分支进行其他修改 (否则你的修改可能被关闭或不会立即合并)** - 代码优化: 优化任何功能设计或实现, 或是引入一个新的设计(请先通过 issue 与维护者达成共识) From 648777e1bd067df5f2f7bd3b545d8a2e7eb48df9 Mon Sep 17 00:00:00 2001 From: sandtechnology <20417547+sandtechnology@users.noreply.github.com> Date: Mon, 28 Sep 2020 12:45:26 +0800 Subject: [PATCH 04/11] Ignore auto reply message (#607) * try to fix #358 according to @Mar8s comment * Disable mirror * Cancel group coroutine when bot leave group and fire event separately * Re-add 0x82 and 0x83 * Revert else logic * Fix build * ignore auto reply message Co-authored-by: Him188 --- .../protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt index d2a0a9c59..719a09dde 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt +++ b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt @@ -328,9 +328,12 @@ internal object MessageSvcPbGetMsg : OutgoingPacketFactory Date: Mon, 28 Sep 2020 13:29:45 +0800 Subject: [PATCH 05/11] Standard Captcha update (#543) * Standard Captcha update - Add icon - Typo - System tips * Remove unnecessary message. * Update WindowHelperJvm.kt --- .../net/mamoe/mirai/utils/LoginSolver.jvm.kt | 2 +- .../net/mamoe/mirai/utils/WindowHelperJvm.kt | 73 +++++++++++++++--- .../net/mamoe/mirai/utils/project-mirai.png | Bin 0 -> 38615 bytes 3 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 mirai-core/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt index 86e0a8b0b..45a50ad84 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt @@ -95,7 +95,7 @@ public class StandardCharImageLoginSolver( if (img == null) { logger.info("无法创建字符图片. 请查看文件") } else { - logger.info(img.createCharImg()) + logger.info("\n" + img.createCharImg()) } } catch (throwable: Throwable) { logger.info("创建字符图片时出错($throwable)。请查看文件") diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt index b0f5cc082..315a438fe 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt +++ b/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt @@ -16,25 +16,66 @@ package net.mamoe.mirai.utils import kotlinx.coroutines.CompletableDeferred import java.awt.BorderLayout import java.awt.Desktop +import java.awt.Dimension +import java.awt.Toolkit import java.awt.event.KeyEvent import java.awt.event.KeyListener import java.awt.event.WindowAdapter import java.awt.event.WindowEvent +import java.awt.image.BufferedImage +import java.io.File +import javax.imageio.ImageIO import javax.swing.JFrame import javax.swing.JTextField import javax.swing.SwingUtilities // 隔离类代码 +@Suppress("DEPRECATION") internal object WindowHelperJvm { - internal val isDesktopSupported: Boolean = - kotlin.runCatching { - System.getProperty("mirai.no-desktop") === null && Desktop.isDesktopSupported() - }.getOrElse { + internal val isDesktopSupported: Boolean = kotlin.run { + if (System.getProperty("mirai.no-desktop") === null) { + kotlin.runCatching { + Class.forName("java.awt.Desktop") + Class.forName("java.awt.Toolkit") + }.onFailure { return@run false } // Android OS + kotlin.runCatching { + Toolkit.getDefaultToolkit() + }.onFailure { // AWT Error, #270 + return@run false + } + kotlin.runCatching { + Desktop.isDesktopSupported().also { stat -> + if (stat) { + MiraiLogger.info( + """ + Mirai 正在使用桌面环境, + 如果你正在使用SSH, 或无法访问桌面等, + 请将 `mirai.no-desktop` 添加到 JVM 系统属性中 (-Dmirai.no-desktop) + 然后重启 Mirai + """.trimIndent() + ) + MiraiLogger.info( + """ + Mirai using DesktopCaptcha System. + If you are running on SSH, cannot access desktop or more. + Please add `mirai.no-desktop` to JVM properties (-Dmirai.no-desktop) + Then restart mirai + """.trimIndent() + ) + } + } + }.getOrElse { + // Should not happen + MiraiLogger.warning("Exception in checking desktop support.", it) + false + } + } else { false } + } } -internal class WindowInitialzier(private val initializer: WindowInitialzier.(JFrame) -> Unit) { +internal class WindowInitializer(private val initializer: WindowInitializer.(JFrame) -> Unit) { private lateinit var frame0: JFrame val frame: JFrame get() = frame0 fun java.awt.Component.append() { @@ -51,12 +92,20 @@ internal class WindowInitialzier(private val initializer: WindowInitialzier.(JFr } } -internal suspend fun openWindow(title: String = "", initializer: WindowInitialzier.(JFrame) -> Unit = {}): String { - return openWindow(title, WindowInitialzier(initializer)) +internal val windowIcon: BufferedImage? by lazy { + WindowHelperJvm::class.java.getResourceAsStream("project-mirai.png")?.use { + ImageIO.read(it) + } } -internal suspend fun openWindow(title: String = "", initializer: WindowInitialzier = WindowInitialzier {}): String { +internal suspend fun openWindow(title: String = "", initializer: WindowInitializer.(JFrame) -> Unit = {}): String { + return openWindow(title, WindowInitializer(initializer)) +} + +internal suspend fun openWindow(title: String = "", initializer: WindowInitializer = WindowInitializer {}): String { val frame = JFrame() + frame.iconImage = windowIcon + frame.minimumSize = Dimension(228, 62) // From Windows 10 val value = JTextField() val def = CompletableDeferred() value.addKeyListener(object : KeyListener { @@ -89,9 +138,9 @@ internal suspend fun openWindow(title: String = "", initializer: WindowInitialzi frame.title = title frame.isVisible = true - val result = def.await().trim() - SwingUtilities.invokeLater { - frame.dispose() + return def.await().trim().also { + SwingUtilities.invokeLater { + frame.dispose() + } } - return result } diff --git a/mirai-core/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png b/mirai-core/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb3a6abad588cf8cd2bab3f9d7a0e65510d8564 GIT binary patch literal 38615 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 literal 0 HcmV?d00001 From 8f7a9f21aa1cfb5d72b6ec75c7ea3bc842e08f89 Mon Sep 17 00:00:00 2001 From: Karlatemp Date: Fri, 2 Oct 2020 23:17:56 +0800 Subject: [PATCH 06/11] Remove md5 --- build.gradle.kts | 2 ++ buildSrc/src/main/kotlin/PublishingHelpers.kt | 4 ++++ gradle/publish.gradle | 2 ++ 3 files changed, 8 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index ec482f51e..abc80e711 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -118,6 +118,7 @@ subprojects { } } + /* val shadowJarMd5 = tasks.register("shadowJarMd5") { dependsOn("shadowJvmJar") @@ -140,6 +141,7 @@ subprojects { tasks.getByName("publish").dependsOn(this) tasks.getByName("bintrayUpload").dependsOn(this) }.get() + */ val githubUpload by tasks.creating { group = "mirai" diff --git a/buildSrc/src/main/kotlin/PublishingHelpers.kt b/buildSrc/src/main/kotlin/PublishingHelpers.kt index 884eab575..ed44db5c8 100644 --- a/buildSrc/src/main/kotlin/PublishingHelpers.kt +++ b/buildSrc/src/main/kotlin/PublishingHelpers.kt @@ -73,6 +73,7 @@ inline fun Project.setupPublishing( // afterEvaluate { + /* val shadowJar = tasks.filterIsInstance().firstOrNull() ?: return//@afterEvaluate tasks.register("shadowJarMd5") { @@ -97,6 +98,7 @@ inline fun Project.setupPublishing( tasks.getByName("publish").dependsOn(this) tasks.getByName("bintrayUpload").dependsOn(this) } + */ if (Bintray.isBintrayAvailable(project)) { bintray { @@ -136,11 +138,13 @@ inline fun Project.setupPublishing( publications { register("mavenJava", MavenPublication::class) { from(components["java"]) + /* afterEvaluate { for (file in tasks.getByName("shadowJarMd5").outputs.files) { artifact(provider { file }) } } + */ groupId = rootProject.group.toString() this.artifactId = artifactId diff --git a/gradle/publish.gradle b/gradle/publish.gradle index e062df133..9c9c7b62c 100644 --- a/gradle/publish.gradle +++ b/gradle/publish.gradle @@ -123,10 +123,12 @@ afterEvaluate { case 'jvm': it.artifactId = isKotlin137x ? "$variantName" : "$variantName-jvm" + /* def files = tasks.getByName("shadowJarMd5").outputs.files + tasks.getByName("shadowJvmJar").outputs.files for (f in files) { artifact f } + */ break case 'js': From 32705d9920a4b2fe8ecf215546672c37517cde5d Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 3 Oct 2020 12:08:57 +0800 Subject: [PATCH 07/11] Remove JvmBlockingBridge on Image.queryUrl --- .../commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt index 231f1e9a7..aa0d5ee1a 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt +++ b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt @@ -22,7 +22,6 @@ package net.mamoe.mirai.message.data -import net.mamoe.kjbb.JvmBlockingBridge import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.Contact import net.mamoe.mirai.message.code.CodableMessage @@ -193,7 +192,7 @@ public fun Image(imageId: String): OfflineImage = when { * @return 原图 HTTP 下载链接 (非 HTTPS) * @throws IllegalStateException 当无任何 [Bot] 在线时抛出 (因为无法获取相关协议) */ -@JvmBlockingBridge +//@JvmBlockingBridge @JvmSynthetic public suspend fun Image.queryUrl(): String { @Suppress("DEPRECATION") From a9d4d14576eec5230b922c2ea983c5dfcd93fc51 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 3 Oct 2020 12:42:13 +0800 Subject: [PATCH 08/11] Rearrange module structure: - Rename mirai-core to mirai-core-api - Rename mirai-core-qqandroid to mirai-core - Rename package net.mamoe.mirai.qqandroid to net.mamoe.mirai.internal - Delete old android targets - Configure default packages correctly - Update licenses --- .travis.yml | 45 --- CONTRIBUTING.md | 2 +- _config.yml | 1 - build.gradle.kts | 8 +- buildSrc/src/main/kotlin/utils.kt | 11 +- compatibility-validator/build.gradle.kts | 49 --- .../java/compatibility/CompatibilityTest.java | 24 -- .../compatibility/CombinedMessageTest.kt | 78 ---- .../compatibility/TestKotlinCompatibility.kt | 27 -- docs/mirai.md | 4 +- gradle/api-validation.gradle | 8 +- java-compatibility-validator/build.gradle.kts | 47 --- .../main/java/test/MPPCompatibilityTest.java | 20 - mirai-core-all/build.gradle.kts | 2 +- mirai-core-api/README.md | 10 + .../build.gradle.kts | 55 ++- .../src/commonMain/kotlin}/Bot.kt | 3 +- .../src/commonMain/kotlin}/BotFactory.kt | 1 - .../src/commonMain/kotlin}/contact/Contact.kt | 0 .../commonMain/kotlin}/contact/ContactList.kt | 0 .../kotlin}/contact/ContactOrBot.kt | 0 .../commonMain/kotlin}/contact/Exceptions.kt | 0 .../src/commonMain/kotlin}/contact/Friend.kt | 0 .../src/commonMain/kotlin}/contact/Group.kt | 0 .../kotlin}/contact/JavaFriendly.common.kt | 0 .../src/commonMain/kotlin}/contact/Member.kt | 0 .../kotlin}/contact/MemberPermission.kt | 0 .../src/commonMain/kotlin}/contact/User.kt | 0 .../src/commonMain/kotlin}/data/FriendInfo.kt | 0 .../kotlin}/data/GroupActiveData.kt | 0 .../kotlin}/data/GroupAnnouncement.kt | 0 .../kotlin}/data/GroupHonorListData.kt | 5 +- .../src/commonMain/kotlin}/data/GroupInfo.kt | 0 .../src/commonMain/kotlin}/data/MemberInfo.kt | 0 .../commonMain/kotlin}/data/OnlineStatus.kt | 0 .../src/commonMain/kotlin}/data/Profile.kt | 0 .../src/commonMain/kotlin}/event/Event.kt | 0 .../event/MessageSubscribersBuilder.kt | 0 .../commonMain/kotlin}/event/deprecated.kt | 2 +- .../event/events/EventCancelledException.kt | 0 .../commonMain/kotlin}/event/events/README.md | 0 .../commonMain/kotlin}/event/events/bot.kt | 2 +- .../commonMain/kotlin}/event/events/friend.kt | 2 +- .../commonMain/kotlin}/event/events/group.kt | 2 +- .../kotlin}/event/events/message.kt | 10 +- .../commonMain/kotlin}/event/events/types.kt | 0 .../event/internal/InternalEventListeners.kt | 0 .../internal/messageSubscribersInternal.kt | 0 .../src/commonMain/kotlin}/event/linear.kt | 0 .../src/commonMain/kotlin}/event/nextEvent.kt | 0 .../src/commonMain/kotlin}/event/select.kt | 0 .../kotlin}/event/subscribeMessages.kt | 0 .../commonMain/kotlin}/event/subscriber.kt | 0 .../kotlin}/event/subscriberDeprecated.kt | 0 .../src/commonMain/kotlin}/javaFriendly.kt | 1 - .../src/commonMain/kotlin}/lowLevelApi.kt | 0 .../kotlin}/message/FriendMessageEvent.kt | 0 .../kotlin}/message/GroupMessageEvent.kt | 0 .../kotlin}/message/MessageEvent.kt | 0 .../kotlin}/message/MessageReceipt.kt | 0 .../kotlin}/message/TempMessageEvent.kt | 0 .../kotlin}/message/action/Nudge.kt | 11 +- .../kotlin}/message/code/CodableMessage.kt | 0 .../kotlin}/message/code/MiraiCode.kt | 0 .../kotlin}/message/code/internal/impl.kt | 0 .../src/commonMain/kotlin}/message/data/At.kt | 0 .../commonMain/kotlin}/message/data/AtAll.kt | 0 .../kotlin}/message/data/CombinedMessage.kt | 0 .../kotlin}/message/data/CustomMessage.kt | 0 .../commonMain/kotlin}/message/data/Face.kt | 0 .../kotlin}/message/data/ForwardMessage.kt | 0 .../kotlin}/message/data/HummerMessage.kt | 0 .../commonMain/kotlin}/message/data/Image.kt | 0 .../kotlin}/message/data/Message.kt | 0 .../kotlin}/message/data/MessageChain.kt | 0 .../message/data/MessageChainBuilder.kt | 0 .../kotlin}/message/data/MessageSource.kt | 0 .../message/data/MessageSourceBuilder.kt | 0 .../kotlin}/message/data/PlainText.kt | 2 +- .../kotlin}/message/data/QuoteReply.kt | 0 .../commonMain/kotlin}/message/data/README.md | 0 .../kotlin}/message/data/RichMessage.kt | 0 .../commonMain/kotlin}/message/data/Voice.kt | 0 .../kotlin}/message/data/imageDeprecated.kt | 12 +- .../commonMain/kotlin}/message/data/impl.kt | 0 .../commonMain/kotlin}/message/deprecated.kt | 14 +- .../src/commonMain/kotlin}/message/utils.kt | 0 .../kotlin}/network/ForceOfflineException.kt | 0 .../kotlin}/network/LoginFailedException.kt | 0 .../kotlin}/qqandroid.network/Packet.kt | 2 +- .../commonMain/kotlin}/utils/Annotations.kt | 0 .../kotlin}/utils/BotConfiguration.common.kt | 0 .../src/commonMain/kotlin}/utils/Channels.kt | 0 .../kotlin}/utils/Context.common.kt | 0 .../commonMain/kotlin}/utils/DeviceInfo.kt | 0 .../commonMain/kotlin}/utils/ExternalImage.kt | 0 .../kotlin}/utils/FileCacheStrategy.common.kt | 0 .../commonMain/kotlin}/utils/LazyProperty.kt | 0 .../kotlin}/utils/LockFreeLinkedList.kt | 0 .../commonMain/kotlin}/utils/LoginSolver.kt | 0 .../commonMain/kotlin}/utils/MiraiLogger.kt | 0 .../kotlin}/utils/OverFileSizeMaxException.kt | 0 .../src/commonMain/kotlin}/utils/SoftRef.kt | 0 .../kotlin}/utils/SystemDeviceInfo.kt | 0 .../src/commonMain/kotlin}/utils/TimeUtils.kt | 0 .../src/commonMain/kotlin}/utils/WeakRef.kt | 0 .../utils/internal/ChunkedFlowSession.kt | 0 .../internal/DeferredReusableInput.common.kt | 0 .../kotlin}/utils/internal/ReusableInput.kt | 0 .../utils/internal/asReusableInput.common.kt | 0 .../kotlin}/utils/internal/md5.common.kt | 0 .../utils/internal/retryCatching.common.kt | 0 .../utils/internal/runBlocking.common.kt | 0 .../java.bindings/io/BufferedInputStream.kt | 0 .../java.bindings/io/BufferedOutputStream.kt | 0 .../java.bindings/io/ByteArrayInputStream.kt | 0 .../java.bindings/io/ByteArrayOutputStream.kt | 5 +- .../utils/java.bindings/io/Closeable.kt | 5 +- .../utils/java.bindings/io/DataInput.kt | 0 .../utils/java.bindings/io/DataOutput.kt | 0 .../utils/java.bindings/io/EOFException.kt | 0 .../kotlin}/utils/java.bindings/io/File.kt | 11 +- .../utils/java.bindings/io/FileDescriptor.kt | 0 .../utils/java.bindings/io/FileInputStream.kt | 0 .../java.bindings/io/FileOutputStream.kt | 0 .../java.bindings/io/FilterInputStream.kt | 0 .../java.bindings/io/FilterOutputStream.kt | 0 .../utils/java.bindings/io/IOException.kt | 0 .../utils/java.bindings/io/InputStream.kt | 0 .../utils/java.bindings/io/ObjectInput.kt | 0 .../utils/java.bindings/io/OutputStream.kt | 5 +- .../utils/java.bindings/io/Serializable.kt | 17 +- .../utils/java.bindings/net/Inet4Address.kt | 0 .../utils/java.bindings/net/Inet6Address.kt | 0 .../utils/java.bindings/net/InetAddress.kt | 0 .../java.bindings/net/InetSocketAddress.kt | 0 .../kotlin}/utils/java.bindings/net/Proxy.kt | 5 +- .../kotlin}/utils/java.bindings/net/Socket.kt | 0 .../utils/java.bindings/net/SocketAddress.kt | 0 .../java.bindings/net/SocketException.kt | 0 .../utils/java.bindings/net/SocketOption.kt | 0 .../utils/java.bindings/net/SocketOptions.kt | 0 .../kotlin}/utils/java.bindings/net/URI.kt | 5 +- .../kotlin}/utils/java.bindings/net/URL.kt | 5 +- .../utils/java.bindings/net/URLConnection.kt | 5 +- .../kotlin}/utils/java.bindings/nio/Buffer.kt | 13 +- .../utils/java.bindings/nio/ByteBuffer.kt | 5 +- .../utils/java.bindings/nio/ByteOrder.kt | 5 +- .../utils/java.bindings/nio/FileSystem.kt | 0 .../kotlin}/utils/java.bindings/nio/Path.kt | 11 +- .../kotlin}/utils/java.bindings/nio/Paths.kt | 0 .../utils/java.bindings/nio/Watchable.kt | 0 .../message.data/CombinedMessageTest.kt | 10 +- .../message.data/ConstrainSingleTest.kt | 3 +- .../kotlin}/message.data/ContentEqualsTest.kt | 3 +- .../kotlin}/message.data/ImageTest.kt | 3 +- .../message.data/MessageChainBuilderTest.kt | 3 +- .../kotlin}/message.data/MessageUtilsTest.kt | 3 +- .../message.data/TestMessageChainDelegate.kt | 1 - .../src/commonTest/kotlin/package.kt | 9 + .../src/commonTest/kotlin}/test/TestDSL.kt | 1 - .../kotlin/utils/ExternalImageTest.kt | 21 +- .../src/commonTest/kotlin}/utils/TimeTest.kt | 6 +- .../src/jvmMain/kotlin}/BotFactory.kt | 6 +- .../src/jvmMain/kotlin}/BotJavaFriendlyAPI.kt | 0 .../kotlin}/contact/ContactJavaFriendlyAPI.kt | 0 .../kotlin}/event/JvmMethodListeners.kt | 0 .../event/internal/EventInternalJvm.kt | 1 - .../event/internal/GlobalEventListeners.kt | 6 +- .../event/internal/MiraiAtomicBoolean.kt | 0 .../kotlin}/message/MessageEventPlatform.kt | 0 .../kotlin}/message/SendImageUtilsJvm.kt | 0 .../src/jvmMain/kotlin}/message/data/Image.kt | 0 .../src/jvmMain/kotlin}/message/deprecated.kt | 1 - .../jvmMain/kotlin}/utils/BotConfiguration.kt | 0 .../src/jvmMain/kotlin}/utils/Context.kt | 0 .../jvmMain/kotlin}/utils/ExternalImageJvm.kt | 0 .../kotlin}/utils/FileCacheStrategy.jvm.kt | 0 .../src/jvmMain/kotlin}/utils/FileLogger.kt | 5 +- .../jvmMain/kotlin}/utils/HyperLinkLabel.kt | 11 +- .../jvmMain/kotlin}/utils/LoggerAdapters.kt | 0 .../jvmMain/kotlin}/utils/LoginSolver.jvm.kt | 0 .../kotlin}/utils/LoginSolver.swing.jvm.kt | 13 +- .../kotlin}/utils/OverFileSizeMaxException.kt | 0 .../kotlin}/utils/PlatformLogger.jvm.kt | 0 .../jvmMain/kotlin}/utils/PlatformUtilsJvm.kt | 0 .../jvmMain/kotlin}/utils/SystemDeviceInfo.kt | 0 .../src/jvmMain/kotlin}/utils/WeakRef.jvm.kt | 0 .../jvmMain/kotlin}/utils/WindowHelperJvm.kt | 1 - .../internal/DeferredReusableInput.jvm.kt | 1 - .../utils/internal/asReusableInput.jvm.kt | 17 +- .../utils/internal/logging/JdkLogger.kt | 0 .../utils/internal/logging/Log4jLogger.kt | 0 .../utils/internal/logging/Slf4jLogger.kt | 0 .../jvmMain/kotlin}/utils/internal/md5.jvm.kt | 0 .../kotlin}/utils/internal/runBlocking.kt | 0 .../net/mamoe/mirai/utils/project-mirai.png | Bin .../mirai/event/JvmMethodEventsTestJava.java | 0 .../jvmTest/kotlin}/event/CancelScopeTest.kt | 5 +- .../src/jvmTest/kotlin}/event/EventTests.kt | 1 + .../kotlin}/event/JvmMethodEventsTest.kt | 6 +- .../kotlin}/message/SubscribingGetTest.kt | 2 - .../src/jvmTest/kotlin/package.kt | 6 +- .../kotlin}/utils/LockFreeLinkedListTest.kt | 2 + .../src/jvmTest/kotlin}/utils/StepUtil.kt | 1 - .../src/main/AndroidManifest.xml | 4 +- mirai-core-qqandroid/README.md | 5 - .../net/mamoe/mirai/qqandroid/QQAndroid.kt | 39 -- .../mirai/qqandroid/QQAndroidBot.android.kt | 183 ---------- .../qqandroid/utils/MiraiPlatformUtils.kt | 102 ------ .../utils/PlatformDatagramChannel.android.kt | 51 --- .../mirai/qqandroid/utils/PlatformSocket.kt | 89 ----- .../qqandroid/utils/addSuppressedMirai.kt | 27 -- .../qqandroid/utils/cryptor/ECDHAndroid.kt | 109 ------ .../mamoe/mirai/qqandroid/utils/setVisible.kt | 8 - .../network/protocol/SyncingCacheList.kt | 27 -- .../mamoe/mirai/qqandroid/utils/LinkedList.kt | 17 - mirai-core/README.md | 11 +- mirai-core/build.gradle.kts | 59 ++- .../net/mamoe/mirai/BotJavaFriendlyAPI.kt | 220 ----------- .../mirai/contact/ContactJavaFriendlyAPI.kt | 344 ------------------ .../kotlin/net/mamoe/mirai/contact/Group.kt | 165 --------- .../kotlin/net/mamoe/mirai/contact/Member.kt | 146 -------- .../contact/PermissionDeniedException.kt | 9 - .../kotlin/net/mamoe/mirai/contact/QQ.kt | 104 ------ .../event/events/EventCancelledException.kt | 9 - .../event/internal/MiraiAtomicBoolean.kt | 42 --- .../net/mamoe/mirai/message/MessagePacket.kt | 94 ----- .../mirai/message/SendImageUtilsAndroid.kt | 200 ---------- .../mirai/utils/ExternalImage.android.kt | 138 ------- .../mamoe/mirai/utils/LoginSolver.android.kt | 48 --- .../mirai/utils/OverFileSizeMaxException.kt | 6 - .../mirai/utils/PlatformLogger.android.kt | 58 --- .../mirai/utils/SystemDeviceInfo.android.kt | 144 -------- .../utils/internal/addSuppressed.android.kt | 26 -- .../mamoe/mirai/utils/internal/md5.android.kt | 22 -- .../mamoe/mirai/utils/internal/runBlocking.kt | 12 - .../net/mamoe/mirai/test/runBlocking.kt | 9 - .../src/commonMain/kotlin}/BotAccount.kt | 5 +- .../src/commonMain/kotlin}/BotFactory.kt | 5 +- .../src/commonMain/kotlin}/BotImpl.kt | 9 +- .../commonMain/kotlin}/QQAndroidBot.common.kt | 39 +- .../commonMain/kotlin}/contact/FriendImpl.kt | 18 +- .../commonMain/kotlin}/contact/GroupImpl.kt | 30 +- .../commonMain/kotlin}/contact/MemberImpl.kt | 18 +- .../src/commonMain/kotlin}/contact/util.kt | 12 +- .../kotlin}/message/FlashImageImpl.kt | 8 +- .../src/commonMain/kotlin}/message/atImpl.kt | 4 +- .../commonMain/kotlin}/message/conversions.kt | 14 +- .../commonMain/kotlin}/message/faceImpl.kt | 8 +- .../commonMain/kotlin}/message/imagesImpl.kt | 6 +- .../kotlin}/message/incomingSourceImpl.kt | 18 +- .../kotlin}/message/offlineSourceImpl.kt | 12 +- .../kotlin}/message/outgoingSourceImpl.kt | 12 +- .../utils/java.bindings/io/Serializable.kt | 28 -- .../kotlin}/network/BotNetworkHandler.kt | 2 +- .../src/commonMain/kotlin}/network/Packet.kt | 2 +- .../network/QQAndroidBotNetworkHandler.kt | 34 +- .../kotlin}/network/QQAndroidClient.kt | 26 +- .../src/commonMain/kotlin}/network/Ticket.kt | 2 +- .../kotlin}/network/highway/HighwayHelper.kt | 14 +- .../kotlin}/network/highway/highway.kt | 14 +- .../kotlin}/network/protocol/LoginType.kt | 2 +- .../network/protocol/SyncingCacheList.kt | 24 ++ .../network/protocol/data/jce/ConfigPush.kt | 8 +- .../network/protocol/data/jce/FriendList.kt | 6 +- .../network/protocol/data/jce/GroupMngReq.kt | 6 +- .../network/protocol/data/jce/MsgType0x210.kt | 8 +- .../protocol/data/jce/OnlinePushPack.kt | 6 +- .../protocol/data/jce/PushNotifyPack.kt | 10 +- .../data/jce/RequestMSFForceOffline.kt | 6 +- .../protocol/data/jce/RequestPacket.kt | 8 +- .../data/jce/RequestPushForceOffline.kt | 6 +- .../protocol/data/jce/SvcReqRegister.kt | 6 +- .../network/protocol/data/jce/TroopList.kt | 6 +- .../network/protocol/data/proto/Cmd0x352.kt | 6 +- .../network/protocol/data/proto/Cmd0x388.kt | 6 +- .../network/protocol/data/proto/Cmd0x857.kt | 6 +- .../network/protocol/data/proto/Cmd0x858.kt | 6 +- .../network/protocol/data/proto/Define.kt | 6 +- .../protocol/data/proto/FriendListCommon.kt | 8 +- .../network/protocol/data/proto/Group.kt | 6 +- .../network/protocol/data/proto/Highway.kt | 6 +- .../protocol/data/proto/HummerCommelem.kt | 6 +- .../protocol/data/proto/ImageRequest.kt | 4 +- .../network/protocol/data/proto/LongMsg.kt | 6 +- .../network/protocol/data/proto/Msg.kt | 8 +- .../network/protocol/data/proto/MsgCommon.kt | 6 +- .../protocol/data/proto/MsgRevokeUserDef.kt | 4 +- .../network/protocol/data/proto/MsgSvc.kt | 8 +- .../protocol/data/proto/MsgTransmit.kt | 6 +- .../network/protocol/data/proto/MultiMsg.kt | 6 +- .../network/protocol/data/proto/OIDB.kt | 6 +- .../network/protocol/data/proto/Oidb0x769.kt | 4 +- .../network/protocol/data/proto/OnlinePush.kt | 6 +- .../network/protocol/data/proto/PbReserve.kt | 6 +- .../protocol/data/proto/StatSvcGetOnline.kt | 4 +- .../network/protocol/data/proto/StructMsg.kt | 6 +- .../network/protocol/data/proto/SyncCookie.kt | 4 +- .../protocol/data/proto/msgType0x210.kt | 6 +- .../network/protocol/packet/EncryptMethod.kt | 12 +- .../protocol/packet/OutgoingPacketAndroid.kt | 10 +- .../network/protocol/packet/PacketFactory.kt | 44 +-- .../kotlin}/network/protocol/packet/Tlv.kt | 12 +- .../network/protocol/packet/chat/ChatType.kt | 2 +- .../network/protocol/packet/chat/MultiMsg.kt | 36 +- .../protocol/packet/chat/NewContact.kt | 22 +- .../protocol/packet/chat/NudgePacket.kt | 24 +- .../protocol/packet/chat/PbMessageSvc.kt | 26 +- .../protocol/packet/chat/TroopManagement.kt | 26 +- .../protocol/packet/chat/image/ImgStore.kt | 22 +- .../protocol/packet/chat/image/LongConn.kt | 22 +- .../chat/receive/MessageSvc.PbDeleteMsg.kt | 16 +- .../chat/receive/MessageSvc.PbGetMsg.kt | 46 +-- .../chat/receive/MessageSvc.PbSendMsg.kt | 38 +- .../receive/MessageSvc.PushForceOffline.kt | 10 +- .../chat/receive/MessageSvc.PushNotify.kt | 14 +- .../chat/receive/OnlinePush.PbPushGroupMsg.kt | 28 +- .../chat/receive/OnlinePush.PbPushTransMsg.kt | 32 +- .../packet/chat/receive/OnlinePush.ReqPush.kt | 52 +-- .../protocol/packet/chat/voice/PttStore.kt | 24 +- .../protocol/packet/list/FriendList.kt | 28 +- .../protocol/packet/list/ProfileService.kt | 28 +- .../protocol/packet/login/ConfigPushSvc.kt | 32 +- .../protocol/packet/login/Heartbeat.kt | 10 +- .../network/protocol/packet/login/StatSvc.kt | 34 +- .../network/protocol/packet/login/WtLogin.kt | 18 +- .../kotlin}/utils/AtomicResizeCacheList.kt | 2 +- .../commonMain/kotlin}/utils/ByteArrayPool.kt | 2 +- .../commonMain/kotlin}/utils/GuidSource.kt | 2 +- .../kotlin}/utils/LinkedList.common.kt | 2 +- .../utils/MiraiPlatformUtils.common.kt | 2 +- .../commonMain/kotlin}/utils/NetworkType.kt | 2 +- .../kotlin}/utils/PlatformDatagramChannel.kt | 2 +- .../kotlin}/utils/PlatformSocket.kt | 2 +- .../commonMain/kotlin}/utils/byteArrays.kt | 2 +- .../kotlin}/utils/contentToString.kt | 2 +- .../commonMain/kotlin}/utils/conversion.kt | 2 +- .../commonMain/kotlin}/utils/cryptor/ECDH.kt | 4 +- .../commonMain/kotlin}/utils/cryptor/TEA.kt | 8 +- .../src/commonMain/kotlin}/utils/flags.kt | 2 +- .../commonMain/kotlin}/utils/io/JceStruct.kt | 2 +- .../commonMain/kotlin}/utils/io/ProtoBuf.kt | 2 +- .../src/commonMain/kotlin}/utils/io/input.kt | 8 +- .../src/commonMain/kotlin}/utils/io/output.kt | 6 +- .../ProtoBufWithNullableSupport.kt | 6 +- .../utils/io/serialization/tars/Tars.kt | 8 +- .../utils/io/serialization/tars/TarsId.kt | 2 +- .../tars/internal/TarsDecoder.kt | 6 +- .../serialization/tars/internal/TarsInput.kt | 4 +- .../io/serialization/tars/internal/TarsOld.kt | 34 +- .../io/serialization/tars/internal/TarsTag.kt | 4 +- .../kotlin}/utils/io/serialization/utils.kt | 18 +- .../src/commonMain/kotlin}/utils/numbers.kt | 2 +- .../src/commonMain/kotlin}/utils/tryNTimes.kt | 2 +- .../src/commonMain/kotlin}/utils/type.kt | 2 +- .../commonTest/kotlin}/PlatformUtilsTest.kt | 3 +- .../commonTest/kotlin}/TypeConversionTest.kt | 3 +- .../mamoe/mirai/utils/ExternalImageTest.kt | 14 - .../kotlin/samples/CustomMessageSamples.kt | 0 .../src/commonTest/kotlin/test/printing.kt | 6 +- .../src/jvmMain/kotlin}/QQAndroid.kt | 5 +- .../src/jvmMain/kotlin}/QQAndroidBot.jvm.kt | 3 +- .../kotlin/utils/LinkedList.kt} | 6 +- .../kotlin}/utils/MiraiPlatformUtils.kt | 2 +- .../jvmMain/kotlin}/utils/PlatformSocket.kt | 6 +- .../kotlin}/utils/PlatformSocketJvm.kt | 2 +- .../kotlin}/utils/addSuppressedMirai.kt | 2 +- .../jvmMain/kotlin}/utils/cryptor/ECDHJvm.kt | 4 +- .../src/jvmMain/kotlin}/utils/setVisible.kt | 2 +- .../jvmTest/java}/SimpleListenerHostTest.java | 0 .../kotlin}/AtomicResizeCacheListTest.kt | 2 - mirai-core/src/main/AndroidManifest.xml | 4 +- mirai-serialization/README.md | 78 ---- mirai-serialization/build.gradle.kts | 97 ----- .../mirai/message/code/MiraiCodeParserTest.kt | 85 ----- settings.gradle | 36 -- settings.gradle.kts | 17 + 378 files changed, 991 insertions(+), 4016 deletions(-) delete mode 100644 .travis.yml delete mode 100644 _config.yml delete mode 100644 compatibility-validator/build.gradle.kts delete mode 100644 compatibility-validator/src/main/java/compatibility/CompatibilityTest.java delete mode 100644 compatibility-validator/src/test/kotlin/compatibility/CombinedMessageTest.kt delete mode 100644 compatibility-validator/src/test/kotlin/compatibility/TestKotlinCompatibility.kt delete mode 100644 java-compatibility-validator/build.gradle.kts delete mode 100644 java-compatibility-validator/src/main/java/test/MPPCompatibilityTest.java create mode 100644 mirai-core-api/README.md rename {mirai-core-qqandroid => mirai-core-api}/build.gradle.kts (77%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/Bot.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/BotFactory.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/Contact.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/ContactList.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/ContactOrBot.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/Exceptions.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/Friend.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/Group.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/JavaFriendly.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/Member.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/MemberPermission.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/contact/User.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/FriendInfo.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/GroupActiveData.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/GroupAnnouncement.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/GroupHonorListData.kt (97%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/GroupInfo.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/MemberInfo.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/OnlineStatus.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/data/Profile.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/Event.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/MessageSubscribersBuilder.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/deprecated.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/EventCancelledException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/README.md (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/bot.kt (98%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/friend.kt (98%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/group.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/message.kt (96%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/events/types.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/internal/InternalEventListeners.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/internal/messageSubscribersInternal.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/linear.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/nextEvent.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/select.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/subscribeMessages.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/subscriber.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/event/subscriberDeprecated.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/javaFriendly.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/lowLevelApi.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/FriendMessageEvent.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/GroupMessageEvent.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/MessageEvent.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/MessageReceipt.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/TempMessageEvent.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/action/Nudge.kt (88%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/code/CodableMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/code/MiraiCode.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/code/internal/impl.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/At.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/AtAll.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/CombinedMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/CustomMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/Face.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/ForwardMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/HummerMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/Image.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/Message.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/MessageChain.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/MessageChainBuilder.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/MessageSource.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/MessageSourceBuilder.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/PlainText.kt (95%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/QuoteReply.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/README.md (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/RichMessage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/Voice.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/imageDeprecated.kt (91%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/data/impl.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/deprecated.kt (87%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/message/utils.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/network/ForceOfflineException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/network/LoginFailedException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/qqandroid.network/Packet.kt (95%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/Annotations.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/BotConfiguration.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/Channels.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/Context.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/DeviceInfo.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/ExternalImage.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/FileCacheStrategy.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/LazyProperty.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/LockFreeLinkedList.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/LoginSolver.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/MiraiLogger.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/OverFileSizeMaxException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/SoftRef.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/SystemDeviceInfo.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/TimeUtils.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/WeakRef.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/ChunkedFlowSession.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/DeferredReusableInput.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/ReusableInput.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/asReusableInput.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/md5.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/retryCatching.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/internal/runBlocking.common.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/BufferedInputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/BufferedOutputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/ByteArrayInputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/ByteArrayOutputStream.kt (75%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/Closeable.kt (86%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/DataInput.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/DataOutput.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/EOFException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/File.kt (89%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/FileDescriptor.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/FileInputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/FileOutputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/FilterInputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/FilterOutputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/IOException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/InputStream.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/ObjectInput.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/io/OutputStream.kt (78%) rename mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/WeakRefAndroid.kt => mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Serializable.kt (55%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/Inet4Address.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/Inet6Address.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/InetAddress.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/InetSocketAddress.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/Proxy.kt (80%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/Socket.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/SocketAddress.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/SocketException.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/SocketOption.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/SocketOptions.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/URI.kt (91%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/URL.kt (91%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/net/URLConnection.kt (95%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/Buffer.kt (97%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/ByteBuffer.kt (99%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/ByteOrder.kt (89%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/FileSystem.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/Path.kt (84%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/Paths.kt (100%) rename {mirai-core/src/commonMain/kotlin/net.mamoe.mirai => mirai-core-api/src/commonMain/kotlin}/utils/java.bindings/nio/Watchable.kt (100%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/CombinedMessageTest.kt (82%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/ConstrainSingleTest.kt (99%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/ContentEqualsTest.kt (98%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/ImageTest.kt (98%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/MessageChainBuilderTest.kt (97%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/MessageUtilsTest.kt (95%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/message.data/TestMessageChainDelegate.kt (99%) create mode 100644 mirai-core-api/src/commonTest/kotlin/package.kt rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/test/TestDSL.kt (99%) rename mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/platformAndroid.kt => mirai-core-api/src/commonTest/kotlin/utils/ExternalImageTest.kt (58%) rename {mirai-core/src/commonTest/kotlin/net/mamoe/mirai => mirai-core-api/src/commonTest/kotlin}/utils/TimeTest.kt (83%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/BotFactory.kt (96%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/BotJavaFriendlyAPI.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/contact/ContactJavaFriendlyAPI.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/event/JvmMethodListeners.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/event/internal/EventInternalJvm.kt (99%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/event/internal/GlobalEventListeners.kt (81%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/event/internal/MiraiAtomicBoolean.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/message/MessageEventPlatform.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/message/SendImageUtilsJvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/message/data/Image.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/message/deprecated.kt (99%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/BotConfiguration.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/Context.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/ExternalImageJvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/FileCacheStrategy.jvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/FileLogger.kt (94%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/HyperLinkLabel.kt (59%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/LoggerAdapters.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/LoginSolver.jvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/LoginSolver.swing.jvm.kt (81%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/OverFileSizeMaxException.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/PlatformLogger.jvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/PlatformUtilsJvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/SystemDeviceInfo.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/WeakRef.jvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/WindowHelperJvm.kt (99%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/DeferredReusableInput.jvm.kt (99%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/asReusableInput.jvm.kt (89%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/logging/JdkLogger.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/logging/Log4jLogger.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/logging/Slf4jLogger.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/md5.jvm.kt (100%) rename {mirai-core/src/jvmMain/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmMain/kotlin}/utils/internal/runBlocking.kt (100%) rename {mirai-core => mirai-core-api}/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png (100%) rename {mirai-core => mirai-core-api}/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java (100%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/event/CancelScopeTest.kt (89%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/event/EventTests.kt (99%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/event/JvmMethodEventsTest.kt (96%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/message/SubscribingGetTest.kt (94%) rename compatibility-validator/src/main/kotlin/compatibility/testKotlinCompatibility.kt => mirai-core-api/src/jvmTest/kotlin/package.kt (91%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/utils/LockFreeLinkedListTest.kt (98%) rename {mirai-core/src/jvmTest/kotlin/net/mamoe/mirai => mirai-core-api/src/jvmTest/kotlin}/utils/StepUtil.kt (94%) rename {mirai-core-qqandroid => mirai-core-api}/src/main/AndroidManifest.xml (65%) delete mode 100644 mirai-core-qqandroid/README.md delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.android.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.android.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHAndroid.kt delete mode 100644 mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt delete mode 100644 mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/SyncingCacheList.kt delete mode 100644 mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Group.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/PermissionDeniedException.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/QQ.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/events/EventCancelledException.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessagePacket.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/SendImageUtilsAndroid.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/ExternalImage.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/LoginSolver.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/addSuppressed.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/md5.android.kt delete mode 100644 mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt delete mode 100644 mirai-core/src/androidTest/kotlin/net/mamoe/mirai/test/runBlocking.kt rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/BotAccount.kt (93%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/BotFactory.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/BotImpl.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/QQAndroidBot.common.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/contact/FriendImpl.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/contact/GroupImpl.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/contact/MemberImpl.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/contact/util.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/FlashImageImpl.kt (86%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/atImpl.kt (92%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/conversions.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/faceImpl.kt (76%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/imagesImpl.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/incomingSourceImpl.kt (92%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/offlineSourceImpl.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/message/outgoingSourceImpl.kt (93%) delete mode 100644 mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Serializable.kt rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/BotNetworkHandler.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/Packet.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/QQAndroidBotNetworkHandler.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/QQAndroidClient.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/Ticket.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/highway/HighwayHelper.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/highway/highway.kt (88%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/LoginType.kt (93%) create mode 100644 mirai-core/src/commonMain/kotlin/network/protocol/SyncingCacheList.kt rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/ConfigPush.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/FriendList.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/GroupMngReq.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/MsgType0x210.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/OnlinePushPack.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/PushNotifyPack.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/RequestMSFForceOffline.kt (80%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/RequestPacket.kt (83%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/RequestPushForceOffline.kt (64%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/SvcReqRegister.kt (92%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/jce/TroopList.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Cmd0x352.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Cmd0x388.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Cmd0x857.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Cmd0x858.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Define.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/FriendListCommon.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Group.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Highway.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/HummerCommelem.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/ImageRequest.kt (92%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/LongMsg.kt (93%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Msg.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/MsgCommon.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/MsgRevokeUserDef.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/MsgSvc.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/MsgTransmit.kt (79%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/MultiMsg.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/OIDB.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/Oidb0x769.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/OnlinePush.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/PbReserve.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/StatSvcGetOnline.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/StructMsg.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/SyncCookie.kt (93%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/data/proto/msgType0x210.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/EncryptMethod.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/OutgoingPacketAndroid.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/PacketFactory.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/Tlv.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/ChatType.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/MultiMsg.kt (81%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/NewContact.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/NudgePacket.kt (74%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/PbMessageSvc.kt (88%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/TroopManagement.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/image/ImgStore.kt (85%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/image/LongConn.kt (81%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt (76%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt (93%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt (87%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt (73%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt (75%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt (88%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt (92%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/chat/voice/PttStore.kt (87%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/list/FriendList.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/list/ProfileService.kt (66%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/login/ConfigPushSvc.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/login/Heartbeat.kt (79%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/login/StatSvc.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/network/protocol/packet/login/WtLogin.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/AtomicResizeCacheList.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/ByteArrayPool.kt (93%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/GuidSource.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/LinkedList.common.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/MiraiPlatformUtils.common.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/NetworkType.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/PlatformDatagramChannel.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/PlatformSocket.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/byteArrays.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/contentToString.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/conversion.kt (99%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/cryptor/ECDH.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/cryptor/TEA.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/flags.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/JceStruct.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/ProtoBuf.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/input.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/output.kt (94%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/ProtoBufWithNullableSupport.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/Tars.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/TarsId.kt (91%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/internal/TarsDecoder.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/internal/TarsInput.kt (98%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/internal/TarsOld.kt (89%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/tars/internal/TarsTag.kt (95%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/io/serialization/utils.kt (90%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/numbers.kt (96%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/tryNTimes.kt (97%) rename {mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/commonMain/kotlin}/utils/type.kt (98%) rename {mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils => mirai-core/src/commonTest/kotlin}/PlatformUtilsTest.kt (95%) rename {mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils => mirai-core/src/commonTest/kotlin}/TypeConversionTest.kt (96%) delete mode 100644 mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/ExternalImageTest.kt rename {mirai-core-qqandroid => mirai-core}/src/commonTest/kotlin/samples/CustomMessageSamples.kt (100%) rename {mirai-core-qqandroid => mirai-core}/src/commonTest/kotlin/test/printing.kt (91%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/QQAndroid.kt (96%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/QQAndroidBot.jvm.kt (95%) rename mirai-core/src/{androidMain/kotlin/net/mamoe/mirai/utils/Context.android.kt => jvmMain/kotlin/utils/LinkedList.kt} (71%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/MiraiPlatformUtils.kt (98%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/PlatformSocket.kt (98%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/PlatformSocketJvm.kt (98%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/addSuppressedMirai.kt (93%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/cryptor/ECDHJvm.kt (96%) rename {mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid => mirai-core/src/jvmMain/kotlin}/utils/setVisible.kt (96%) rename {java-test/src/test/java/net/mamoe/mirai/javatest => mirai-core/src/jvmTest/java}/SimpleListenerHostTest.java (100%) rename {mirai-core-qqandroid/src/jvmTest/kotlin/net/mamoe/mirai/qqandroid/utils => mirai-core/src/jvmTest/kotlin}/AtomicResizeCacheListTest.kt (96%) delete mode 100644 mirai-serialization/README.md delete mode 100644 mirai-serialization/build.gradle.kts delete mode 100644 mirai-serialization/src/commonTest/kotlin/net/mamoe/mirai/message/code/MiraiCodeParserTest.kt delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 382dce28e..000000000 --- a/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -language: android - -jdk: oraclejdk8 -### need JDK11 - -env: - global: - - ANDROID_API_LEVEL=28 - - ANDROID_BUILD_TOOLS_VERSION=28.0.3 - - ANDROID_ABI=armeabi-v7a - -android: - components: - - tools - - platform-tools - - tools - - extra-android-m2repository - licenses: - - 'android-sdk-preview-license-52d11cd2' - - 'android-sdk-license-.+' - - 'google-gdk-license-.+' - -before_install: - - touch $HOME/.android/repositories.cfg - - yes | sdkmanager "platforms;android-28" - - yes | sdkmanager "build-tools;28.0.3" - -### need JDK8( SDK manager thing) - -before_cache: - - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ - -cache: - directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ - - $HOME/.android/build-cache - -before_script: - - chmod +x gradlew - -script: - - ./gradlew clean build - - ./gradlew test \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bab6164fc..6499a04cc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,7 +31,7 @@ mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 m ### 注意事项 - 尽量不要引用新的库 - 遵守 Kotlin 官方代码规范(提交前使用 IDE 格式化代码 (commit 时勾选 'Reformat code')) -- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 `net.mamoe.mirai.qqandroid.utils.io.serialization.Tars` 拆解 Tars 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据. +- 不要手动拆解数据包. 请一定使用 `kotlinx.serialization` 拆解 ProtoBuf, 使用 `net.mamoe.mirai.internal.utils.io.serialization.Tars` 拆解 Tars 数据包, 使用 `kotlinx.serialization` 拆解 Json 数据. ## 社区 diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c4192631f..000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index abc80e711..87422303c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -273,19 +273,19 @@ subprojects { suppress = true } perPackageOption { - prefix = "net.mamoe.mirai.qqandroid.utils" + prefix = "net.mamoe.mirai.internal.utils" suppress = true } perPackageOption { - prefix = "net.mamoe.mirai.qqandroid.contact" + prefix = "net.mamoe.mirai.internal.contact" suppress = true } perPackageOption { - prefix = "net.mamoe.mirai.qqandroid.message" + prefix = "net.mamoe.mirai.internal.message" suppress = true } perPackageOption { - prefix = "net.mamoe.mirai.qqandroid.network" + prefix = "net.mamoe.mirai.internal.network" suppress = true } } diff --git a/buildSrc/src/main/kotlin/utils.kt b/buildSrc/src/main/kotlin/utils.kt index 3b7230f4b..9dd5269ca 100644 --- a/buildSrc/src/main/kotlin/utils.kt +++ b/buildSrc/src/main/kotlin/utils.kt @@ -3,16 +3,13 @@ import java.io.OutputStream import java.security.MessageDigest /* + * Copyright 2019-2020 Mamoe Technologies and contributors. * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * + * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @OptIn(ExperimentalUnsignedTypes::class) fun ByteArray.toUHexString( separator: String = " ", diff --git a/compatibility-validator/build.gradle.kts b/compatibility-validator/build.gradle.kts deleted file mode 100644 index 971365998..000000000 --- a/compatibility-validator/build.gradle.kts +++ /dev/null @@ -1,49 +0,0 @@ -@file:Suppress("UNUSED_VARIABLE") - -plugins { - kotlin("jvm") - java -} - -description = "Binary and source compatibility validator for mirai-core and mirai-core-qqandroid" - -repositories { - mavenCentral() - jcenter() -} - -kotlin { - sourceSets { - all { - languageSettings.enableLanguageFeature("InlineClasses") - languageSettings.useExperimentalAnnotation("kotlin.Experimental") - } - - main { - dependencies { - api(kotlin("stdlib", Versions.Kotlin.stdlib)) - runtimeOnly(project(":mirai-core-qqandroid")) - compileOnly("net.mamoe:mirai-core-qqandroid:0.38.0") - } - } - - test { - dependencies { - api(kotlin("stdlib", Versions.Kotlin.stdlib)) - api(kotlin("test")) - api(kotlin("test-junit")) - runtimeOnly(project(":mirai-core-qqandroid")) - compileOnly("net.mamoe:mirai-core-qqandroid:0.38.0") - } - } - } -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} \ No newline at end of file diff --git a/compatibility-validator/src/main/java/compatibility/CompatibilityTest.java b/compatibility-validator/src/main/java/compatibility/CompatibilityTest.java deleted file mode 100644 index 63ff3dd19..000000000 --- a/compatibility-validator/src/main/java/compatibility/CompatibilityTest.java +++ /dev/null @@ -1,24 +0,0 @@ -package compatibility; - -import net.mamoe.mirai.Bot; -import net.mamoe.mirai.BotFactoryJvm; -import net.mamoe.mirai.message.data.MessageUtils; - -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ -public class CompatibilityTest { - public static void main(String[] args) { - Bot bot = BotFactoryJvm.newBot(Long.parseLong(System.getenv("qq")), System.getenv("password")); - - bot.getFriend(123).sendMessage(MessageUtils.newChain("") - .plus("") - .plus(MessageUtils.newImage(""))); - bot.getFriend(123).sendMessage(""); - } -} diff --git a/compatibility-validator/src/test/kotlin/compatibility/CombinedMessageTest.kt b/compatibility-validator/src/test/kotlin/compatibility/CombinedMessageTest.kt deleted file mode 100644 index 843884a18..000000000 --- a/compatibility-validator/src/test/kotlin/compatibility/CombinedMessageTest.kt +++ /dev/null @@ -1,78 +0,0 @@ -package compatibility - -import net.mamoe.mirai.message.data.* -import kotlin.test.Test -import kotlin.test.assertEquals - - -internal class CombinedMessageTest { - - - @Test - fun testAsSequence() { - var message: Message = "Hello ".toMessage() - message += "World" - - assertEquals( - "Hello World", - (message as CombinedMessage).asSequence().joinToString(separator = "") - ) - } - - @Test - fun testAsSequence2() { - var message: Message = "Hello ".toMessage() - message += listOf( - PlainText("W"), - PlainText("o"), - PlainText("r") + PlainText("ld") - ).asMessageChain() - - assertEquals( - "Hello World", - (message as CombinedMessage).asSequence().joinToString(separator = "") - ) - } -} - -fun Iterator.joinToString( - separator: CharSequence = ", ", - prefix: CharSequence = "", - postfix: CharSequence = "", - limit: Int = -1, - truncated: CharSequence = "...", - transform: ((T) -> CharSequence)? = null -): String { - return joinTo(StringBuilder(), separator, prefix, postfix, limit, truncated, transform).toString() -} - -fun Iterator.joinTo( - buffer: A, - separator: CharSequence = ", ", - prefix: CharSequence = "", - postfix: CharSequence = "", - limit: Int = -1, - truncated: CharSequence = "...", - transform: ((T) -> CharSequence)? = null -): A { - buffer.append(prefix) - var count = 0 - for (element in this) { - if (++count > 1) buffer.append(separator) - if (limit < 0 || count <= limit) { - buffer.appendElement(element, transform) - } else break - } - if (limit in 0 until count) buffer.append(truncated) - buffer.append(postfix) - return buffer -} - -internal fun Appendable.appendElement(element: T, transform: ((T) -> CharSequence)?) { - when { - transform != null -> append(transform(element)) - element is CharSequence? -> append(element) - element is Char -> append(element) - else -> append(element.toString()) - } -} \ No newline at end of file diff --git a/compatibility-validator/src/test/kotlin/compatibility/TestKotlinCompatibility.kt b/compatibility-validator/src/test/kotlin/compatibility/TestKotlinCompatibility.kt deleted file mode 100644 index 051444cd7..000000000 --- a/compatibility-validator/src/test/kotlin/compatibility/TestKotlinCompatibility.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package compatibility - -import net.mamoe.mirai.message.data.Message -import net.mamoe.mirai.message.data.PlainText -import org.junit.Test - - -internal class TestKotlinCompatibility { - - @Test - fun testMessageChain() { - val x = PlainText("te") + PlainText("st") - - println(Message::class.java.declaredMethods.joinToString("\n")) - println() - println(x::class.java.declaredMethods.joinToString("\n")) - } -} \ No newline at end of file diff --git a/docs/mirai.md b/docs/mirai.md index 3b2ec87f5..d38e199b9 100644 --- a/docs/mirai.md +++ b/docs/mirai.md @@ -20,9 +20,9 @@ mirai 项目整体由 核心 (`mirai-core`) 与 控制台(`mirai-console`) 组成. -- [`mirai-core`](../mirai-core) 是机器人服务支持**库**. 提供所有机器人相关 API. **本身只包含抽象类和接口, 使用时还需要同时依赖协议模块**. +- [`mirai-core`](../mirai-core-api) 是机器人服务支持**库**. 提供所有机器人相关 API. **本身只包含抽象类和接口, 使用时还需要同时依赖协议模块**. 可用的协议模块: - - [`mirai-core-qqandroid`](../mirai-core-qqandroid): Android QQ 8.3.0 版本协议实现. + - [`mirai-core-qqandroid`](../mirai-core): Android QQ 8.3.0 版本协议实现. `mirai-core` 设计为一个 **`支持库`**, 意味着它可以被独立依赖, 在任意项目中使用. 详见下文. diff --git a/gradle/api-validation.gradle b/gradle/api-validation.gradle index c18c40cdc..c3434f235 100644 --- a/gradle/api-validation.gradle +++ b/gradle/api-validation.gradle @@ -5,9 +5,9 @@ apiValidation { ] ignoredPackages += [ - "net.mamoe.mirai.qqandroid.contact", - "net.mamoe.mirai.qqandroid.message", - "net.mamoe.mirai.qqandroid.network", - "net.mamoe.mirai.qqandroid.utils" + "net.mamoe.mirai.internal.contact", + "net.mamoe.mirai.internal.message", + "net.mamoe.mirai.internal.network", + "net.mamoe.mirai.internal.utils" ] } \ No newline at end of file diff --git a/java-compatibility-validator/build.gradle.kts b/java-compatibility-validator/build.gradle.kts deleted file mode 100644 index 46f1024f8..000000000 --- a/java-compatibility-validator/build.gradle.kts +++ /dev/null @@ -1,47 +0,0 @@ -@file:Suppress("UNUSED_VARIABLE") - -plugins { - kotlin("jvm") - java -} - -description = "Java compatibility validator for mirai-core and mirai-core-qqandroid" - -repositories { - mavenCentral() - jcenter() -} - -kotlin { - sourceSets { - all { - languageSettings.enableLanguageFeature("InlineClasses") - languageSettings.useExperimentalAnnotation("kotlin.Experimental") - } - - main { - dependencies { - api(kotlin("stdlib", Versions.Kotlin.stdlib)) - api(project(":mirai-core-qqandroid")) - } - } - - test { - dependencies { - api(kotlin("stdlib", Versions.Kotlin.stdlib)) - api(kotlin("test")) - api(kotlin("test-junit")) - api(project(":mirai-core-qqandroid")) - } - } - } -} - -tasks.withType { - kotlinOptions.jvmTarget = "1.8" -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 -} \ No newline at end of file diff --git a/java-compatibility-validator/src/main/java/test/MPPCompatibilityTest.java b/java-compatibility-validator/src/main/java/test/MPPCompatibilityTest.java deleted file mode 100644 index c86fb687d..000000000 --- a/java-compatibility-validator/src/main/java/test/MPPCompatibilityTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package test; - -import net.mamoe.mirai.Bot; -import net.mamoe.mirai.contact.Contact; -import net.mamoe.mirai.contact.QQ; - -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ -public class MPPCompatibilityTest { - public static void main(String[] args) { - final QQ next = Bot.getInstances().get(0).getFriends().iterator().next(); - ((Contact) next).sendMessage(""); - } -} diff --git a/mirai-core-all/build.gradle.kts b/mirai-core-all/build.gradle.kts index d5d00c41a..d396a559c 100644 --- a/mirai-core-all/build.gradle.kts +++ b/mirai-core-all/build.gradle.kts @@ -54,7 +54,7 @@ kotlin { dependencies { api(project(":mirai-core")) - api(project(":mirai-core-qqandroid")) + api(project(":mirai-core-api")) } setupPublishing("mirai-core-all") \ No newline at end of file diff --git a/mirai-core-api/README.md b/mirai-core-api/README.md new file mode 100644 index 000000000..7c659728c --- /dev/null +++ b/mirai-core-api/README.md @@ -0,0 +1,10 @@ +# mirai-core + +mirai 的核心公开 API. + +mirai 为多协议设计, `mirai-core` 只提供基础框架和抽象数据类. +具体的各协议实现为 `mirai-core-PROTOCOL`, 这些协议模块都继承自 `mirai-core`. + +可用的协议模块: +- [`mirai-core-qqandroid`](../mirai-core): Android QQ 8.3.0 版本协议实现. + diff --git a/mirai-core-qqandroid/build.gradle.kts b/mirai-core-api/build.gradle.kts similarity index 77% rename from mirai-core-qqandroid/build.gradle.kts rename to mirai-core-api/build.gradle.kts index 4dd5ade6f..a27495b7a 100644 --- a/mirai-core-qqandroid/build.gradle.kts +++ b/mirai-core-api/build.gradle.kts @@ -4,16 +4,19 @@ plugins { kotlin("multiplatform") id("kotlinx-atomicfu") kotlin("plugin.serialization") + id("signing") id("net.mamoe.kotlin-jvm-blocking-bridge") `maven-publish` id("com.jfrog.bintray") } -description = "Mirai Protocol implementation for QQ Android" +description = "Mirai API module" val isAndroidSDKAvailable: Boolean by project kotlin { + explicitApi() + if (isAndroidSDKAvailable) { apply(from = rootProject.file("gradle/android.gradle")) android("android") { @@ -34,7 +37,8 @@ kotlin { ) } - jvm("jvm") { + jvm { + // withJava() // https://youtrack.jetbrains.com/issue/KT-39991 } sourceSets.apply { @@ -52,41 +56,50 @@ kotlin { languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.UnstableExternalImage") languageSettings.progressiveMode = true - - dependencies { - api(project(":mirai-core")) - } } val commonMain by getting { dependencies { + api(kotlin("serialization")) + api(kotlin("reflect")) + api1(kotlinx("serialization-core", Versions.Kotlin.serialization)) - api(kotlinx("coroutines-core", Versions.Kotlin.coroutines)) implementation1(kotlinx("serialization-protobuf", Versions.Kotlin.serialization)) - api1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") api1(kotlinx("io", Versions.Kotlin.io)) - implementation1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) + api1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) + api(kotlinx("coroutines-core", Versions.Kotlin.coroutines)) + + implementation1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") + + api1(ktor("client-cio")) + api1(ktor("client-core")) + api1(ktor("network")) } } - val commonTest by getting { + commonTest { dependencies { implementation(kotlin("test-annotations-common")) implementation(kotlin("test-common")) - implementation(kotlin("script-runtime")) } } if (isAndroidSDKAvailable) { val androidMain by getting { dependencies { + api(kotlin("reflect")) + + api1(kotlinx("io-jvm", Versions.Kotlin.io)) + api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) + + api1(ktor("client-android", Versions.Kotlin.ktor)) } } val androidTest by getting { dependencies { - implementation(kotlin("test", Versions.Kotlin.compiler)) - implementation(kotlin("test-junit", Versions.Kotlin.compiler)) + implementation(kotlin("test")) + implementation(kotlin("test-junit")) implementation(kotlin("test-annotations-common")) implementation(kotlin("test-common")) } @@ -95,18 +108,23 @@ kotlin { val jvmMain by getting { dependencies { - implementation("org.bouncycastle:bcprov-jdk15on:1.64") + api(kotlin("reflect")) + compileOnly("org.apache.logging.log4j:log4j-api:" + Versions.Logging.log4j) + compileOnly("org.slf4j:slf4j-api:" + Versions.Logging.slf4j) + + api1(ktor("client-core-jvm", Versions.Kotlin.ktor)) api1(kotlinx("io-jvm", Versions.Kotlin.io)) - // api(kotlinx("coroutines-debug", Versions.Kotlin.coroutines)) + api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) } } val jvmTest by getting { dependencies { - dependsOn(commonTest) - implementation(kotlin("test", Versions.Kotlin.compiler)) - implementation(kotlin("test-junit", Versions.Kotlin.compiler)) + implementation(kotlin("test")) + implementation(kotlin("test-junit")) implementation("org.pcap4j:pcap4j-distribution:1.8.2") + + runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE } } } @@ -132,7 +150,6 @@ fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNo apply(from = rootProject.file("gradle/publish.gradle")) - tasks.withType { doFirst { publishing.publications diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt b/mirai-core-api/src/commonMain/kotlin/Bot.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt rename to mirai-core-api/src/commonMain/kotlin/Bot.kt index b8c5956a8..2fbca4e8b 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/Bot.kt +++ b/mirai-core-api/src/commonMain/kotlin/Bot.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "EXPERIMENTAL_API_USAGE", "unused", "FunctionName", "NOTHING_TO_INLINE", "UnusedImport", "EXPERIMENTAL_OVERRIDE", "CanBeParameter", "MemberVisibilityCanBePrivate" @@ -236,7 +235,7 @@ public abstract class Bot internal constructor( @PlannedRemoval("1.2.0") @Deprecated( "use extension.", - replaceWith = ReplaceWith("image.queryUrl()", imports = ["net.mamoe.mirai.message.data.queryUrl"]), + replaceWith = ReplaceWith("image.queryUrl()", imports = ["queryUrl"]), level = DeprecationLevel.ERROR ) @JvmSynthetic diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt b/mirai-core-api/src/commonMain/kotlin/BotFactory.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt rename to mirai-core-api/src/commonMain/kotlin/BotFactory.kt index bd4dde5e8..0dcfe01dc 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/BotFactory.kt +++ b/mirai-core-api/src/commonMain/kotlin/BotFactory.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("FunctionName", "INAPPLICABLE_JVM_NAME", "DEPRECATION_ERROR", "DeprecatedCallableAddReplaceWith") package net.mamoe.mirai diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt b/mirai-core-api/src/commonMain/kotlin/contact/Contact.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Contact.kt rename to mirai-core-api/src/commonMain/kotlin/contact/Contact.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/ContactList.kt b/mirai-core-api/src/commonMain/kotlin/contact/ContactList.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/ContactList.kt rename to mirai-core-api/src/commonMain/kotlin/contact/ContactList.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/ContactOrBot.kt b/mirai-core-api/src/commonMain/kotlin/contact/ContactOrBot.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/ContactOrBot.kt rename to mirai-core-api/src/commonMain/kotlin/contact/ContactOrBot.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Exceptions.kt b/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Exceptions.kt rename to mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt b/mirai-core-api/src/commonMain/kotlin/contact/Friend.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Friend.kt rename to mirai-core-api/src/commonMain/kotlin/contact/Friend.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt b/mirai-core-api/src/commonMain/kotlin/contact/Group.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Group.kt rename to mirai-core-api/src/commonMain/kotlin/contact/Group.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/JavaFriendly.common.kt b/mirai-core-api/src/commonMain/kotlin/contact/JavaFriendly.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/JavaFriendly.common.kt rename to mirai-core-api/src/commonMain/kotlin/contact/JavaFriendly.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt b/mirai-core-api/src/commonMain/kotlin/contact/Member.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/Member.kt rename to mirai-core-api/src/commonMain/kotlin/contact/Member.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/MemberPermission.kt b/mirai-core-api/src/commonMain/kotlin/contact/MemberPermission.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/MemberPermission.kt rename to mirai-core-api/src/commonMain/kotlin/contact/MemberPermission.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt b/mirai-core-api/src/commonMain/kotlin/contact/User.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/contact/User.kt rename to mirai-core-api/src/commonMain/kotlin/contact/User.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/FriendInfo.kt b/mirai-core-api/src/commonMain/kotlin/data/FriendInfo.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/FriendInfo.kt rename to mirai-core-api/src/commonMain/kotlin/data/FriendInfo.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupActiveData.kt b/mirai-core-api/src/commonMain/kotlin/data/GroupActiveData.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupActiveData.kt rename to mirai-core-api/src/commonMain/kotlin/data/GroupActiveData.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupAnnouncement.kt b/mirai-core-api/src/commonMain/kotlin/data/GroupAnnouncement.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupAnnouncement.kt rename to mirai-core-api/src/commonMain/kotlin/data/GroupAnnouncement.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupHonorListData.kt b/mirai-core-api/src/commonMain/kotlin/data/GroupHonorListData.kt similarity index 97% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupHonorListData.kt rename to mirai-core-api/src/commonMain/kotlin/data/GroupHonorListData.kt index 356b121d7..79f11792d 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupHonorListData.kt +++ b/mirai-core-api/src/commonMain/kotlin/data/GroupHonorListData.kt @@ -1,6 +1,9 @@ package net.mamoe.mirai.data -import kotlinx.serialization.* +import kotlinx.serialization.KSerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Serializer import kotlinx.serialization.descriptors.PrimitiveKind import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupInfo.kt b/mirai-core-api/src/commonMain/kotlin/data/GroupInfo.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/GroupInfo.kt rename to mirai-core-api/src/commonMain/kotlin/data/GroupInfo.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/MemberInfo.kt b/mirai-core-api/src/commonMain/kotlin/data/MemberInfo.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/MemberInfo.kt rename to mirai-core-api/src/commonMain/kotlin/data/MemberInfo.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/OnlineStatus.kt b/mirai-core-api/src/commonMain/kotlin/data/OnlineStatus.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/OnlineStatus.kt rename to mirai-core-api/src/commonMain/kotlin/data/OnlineStatus.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/Profile.kt b/mirai-core-api/src/commonMain/kotlin/data/Profile.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/data/Profile.kt rename to mirai-core-api/src/commonMain/kotlin/data/Profile.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/Event.kt b/mirai-core-api/src/commonMain/kotlin/event/Event.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/Event.kt rename to mirai-core-api/src/commonMain/kotlin/event/Event.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt b/mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/MessageSubscribersBuilder.kt rename to mirai-core-api/src/commonMain/kotlin/event/MessageSubscribersBuilder.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/deprecated.kt b/mirai-core-api/src/commonMain/kotlin/event/deprecated.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/deprecated.kt rename to mirai-core-api/src/commonMain/kotlin/event/deprecated.kt index dfa26edca..92b89db4c 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/deprecated.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/deprecated.kt @@ -37,7 +37,7 @@ import kotlin.jvm.JvmName // // //// -//// 此文件存放所有 `net.mamoe.mirai.event.subscribeMessages` 已弃用的函数. +//// 此文件存放所有 `subscribeMessages` 已弃用的函数. //// // // diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/EventCancelledException.kt b/mirai-core-api/src/commonMain/kotlin/event/events/EventCancelledException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/EventCancelledException.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/EventCancelledException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/README.md b/mirai-core-api/src/commonMain/kotlin/event/events/README.md similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/README.md rename to mirai-core-api/src/commonMain/kotlin/event/events/README.md diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/bot.kt b/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt similarity index 98% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/bot.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/bot.kt index 2db8de6aa..ac751d5b3 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/bot.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/events/bot.kt @@ -16,8 +16,8 @@ package net.mamoe.mirai.event.events import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.User import net.mamoe.mirai.event.AbstractEvent +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.message.action.Nudge -import net.mamoe.mirai.qqandroid.network.Packet import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.MiraiInternalAPI import net.mamoe.mirai.utils.SinceMirai diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt b/mirai-core-api/src/commonMain/kotlin/event/events/friend.kt similarity index 98% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/friend.kt index 41cbc64d5..17afdc514 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/friend.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/events/friend.kt @@ -20,7 +20,7 @@ import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.User import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.internal.MiraiAtomicBoolean -import net.mamoe.mirai.qqandroid.network.Packet +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.utils.SinceMirai import net.mamoe.mirai.utils.internal.runBlocking import kotlin.jvm.* diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/group.kt b/mirai-core-api/src/commonMain/kotlin/event/events/group.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/group.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/group.kt index 5616c6605..e6ed888bd 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/group.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/events/group.kt @@ -22,8 +22,8 @@ import net.mamoe.mirai.contact.MemberPermission import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.BroadcastControllable import net.mamoe.mirai.event.internal.MiraiAtomicBoolean +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.message.action.Nudge -import net.mamoe.mirai.qqandroid.network.Packet import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.utils.SinceMirai import net.mamoe.mirai.utils.internal.runBlocking diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/message.kt b/mirai-core-api/src/commonMain/kotlin/event/events/message.kt similarity index 96% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/message.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/message.kt index 83c3ea23f..98f4fddfc 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/message.kt +++ b/mirai-core-api/src/commonMain/kotlin/event/events/message.kt @@ -19,12 +19,12 @@ import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.CancellableEvent import net.mamoe.mirai.event.events.ImageUploadEvent.Failed import net.mamoe.mirai.event.events.ImageUploadEvent.Succeed +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource -import net.mamoe.mirai.qqandroid.network.Packet import net.mamoe.mirai.utils.ExternalImage import net.mamoe.mirai.utils.PlannedRemoval import net.mamoe.mirai.utils.SinceMirai @@ -403,7 +403,7 @@ public sealed class ImageUploadEvent : BotEvent, BotActiveEvent, AbstractEvent() message = """ 以 MessagePreSendEvent 和 MessagePostSendEvent 替换. """, - replaceWith = ReplaceWith("MessagePreSendEvent", "net.mamoe.mirai.event.events.MessagePreSendEvent"), + replaceWith = ReplaceWith("MessagePreSendEvent", "MessagePreSendEvent"), level = DeprecationLevel.WARNING ) public sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractEvent() { @@ -415,7 +415,7 @@ public sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractEvent() message = """ 以 GroupMessagePreSendEvent 和 GroupMessagePostSendEvent 替换. """, - replaceWith = ReplaceWith("GroupMessagePreSendEvent", "net.mamoe.mirai.event.events.GroupMessagePreSendEvent"), + replaceWith = ReplaceWith("GroupMessagePreSendEvent", "GroupMessagePreSendEvent"), level = DeprecationLevel.WARNING ) public data class GroupMessageSendEvent internal constructor( @@ -429,7 +429,7 @@ public sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractEvent() """, replaceWith = ReplaceWith( "FriendMessagePreSendEvent", - "net.mamoe.mirai.event.events.FriendMessagePreSendEvent" + "FriendMessagePreSendEvent" ), level = DeprecationLevel.WARNING ) @@ -442,7 +442,7 @@ public sealed class MessageSendEvent : BotEvent, BotActiveEvent, AbstractEvent() message = """ 以 TempMessagePreSendEvent 和 TempMessagePostSendEvent 替换. """, - replaceWith = ReplaceWith("TempMessagePreSendEvent", "net.mamoe.mirai.event.events.TempMessagePreSendEvent"), + replaceWith = ReplaceWith("TempMessagePreSendEvent", "TempMessagePreSendEvent"), level = DeprecationLevel.WARNING ) public data class TempMessageSendEvent internal constructor( diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/types.kt b/mirai-core-api/src/commonMain/kotlin/event/events/types.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/events/types.kt rename to mirai-core-api/src/commonMain/kotlin/event/events/types.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/internal/InternalEventListeners.kt b/mirai-core-api/src/commonMain/kotlin/event/internal/InternalEventListeners.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/internal/InternalEventListeners.kt rename to mirai-core-api/src/commonMain/kotlin/event/internal/InternalEventListeners.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/internal/messageSubscribersInternal.kt b/mirai-core-api/src/commonMain/kotlin/event/internal/messageSubscribersInternal.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/internal/messageSubscribersInternal.kt rename to mirai-core-api/src/commonMain/kotlin/event/internal/messageSubscribersInternal.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/linear.kt b/mirai-core-api/src/commonMain/kotlin/event/linear.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/linear.kt rename to mirai-core-api/src/commonMain/kotlin/event/linear.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/nextEvent.kt b/mirai-core-api/src/commonMain/kotlin/event/nextEvent.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/nextEvent.kt rename to mirai-core-api/src/commonMain/kotlin/event/nextEvent.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/select.kt b/mirai-core-api/src/commonMain/kotlin/event/select.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/select.kt rename to mirai-core-api/src/commonMain/kotlin/event/select.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscribeMessages.kt b/mirai-core-api/src/commonMain/kotlin/event/subscribeMessages.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscribeMessages.kt rename to mirai-core-api/src/commonMain/kotlin/event/subscribeMessages.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt b/mirai-core-api/src/commonMain/kotlin/event/subscriber.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriber.kt rename to mirai-core-api/src/commonMain/kotlin/event/subscriber.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriberDeprecated.kt b/mirai-core-api/src/commonMain/kotlin/event/subscriberDeprecated.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/event/subscriberDeprecated.kt rename to mirai-core-api/src/commonMain/kotlin/event/subscriberDeprecated.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/javaFriendly.kt b/mirai-core-api/src/commonMain/kotlin/javaFriendly.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/javaFriendly.kt rename to mirai-core-api/src/commonMain/kotlin/javaFriendly.kt index eff6c5eec..ea0b20217 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/javaFriendly.kt +++ b/mirai-core-api/src/commonMain/kotlin/javaFriendly.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - package net.mamoe.mirai /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt b/mirai-core-api/src/commonMain/kotlin/lowLevelApi.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/lowLevelApi.kt rename to mirai-core-api/src/commonMain/kotlin/lowLevelApi.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/FriendMessageEvent.kt rename to mirai-core-api/src/commonMain/kotlin/message/FriendMessageEvent.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/GroupMessageEvent.kt rename to mirai-core-api/src/commonMain/kotlin/message/GroupMessageEvent.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageEvent.kt rename to mirai-core-api/src/commonMain/kotlin/message/MessageEvent.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageReceipt.kt b/mirai-core-api/src/commonMain/kotlin/message/MessageReceipt.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/MessageReceipt.kt rename to mirai-core-api/src/commonMain/kotlin/message/MessageReceipt.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessageEvent.kt b/mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/TempMessageEvent.kt rename to mirai-core-api/src/commonMain/kotlin/message/TempMessageEvent.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/action/Nudge.kt b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt similarity index 88% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/action/Nudge.kt rename to mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt index 927ec79df..078a5d39b 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/action/Nudge.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/action/Nudge.kt @@ -1,14 +1,11 @@ /* + * Copyright 2019-2020 Mamoe Technologies and contributors. * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * + * https://github.com/mamoe/mirai/blob/master/LICENSE */ - package net.mamoe.mirai.message.action import net.mamoe.kjbb.JvmBlockingBridge diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/CodableMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/code/CodableMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/CodableMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/code/CodableMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/MiraiCode.kt b/mirai-core-api/src/commonMain/kotlin/message/code/MiraiCode.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/MiraiCode.kt rename to mirai-core-api/src/commonMain/kotlin/message/code/MiraiCode.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/internal/impl.kt b/mirai-core-api/src/commonMain/kotlin/message/code/internal/impl.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/internal/impl.kt rename to mirai-core-api/src/commonMain/kotlin/message/code/internal/impl.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt b/mirai-core-api/src/commonMain/kotlin/message/data/At.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/At.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/At.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt b/mirai-core-api/src/commonMain/kotlin/message/data/AtAll.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/AtAll.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/AtAll.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/CombinedMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/CombinedMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/CombinedMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/CustomMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/CustomMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Face.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/Face.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/ForwardMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/ForwardMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/ForwardMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/ForwardMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/HummerMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/HummerMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/HummerMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Image.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Image.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/Image.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Message.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/Message.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt b/mirai-core-api/src/commonMain/kotlin/message/data/MessageChain.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChain.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/MessageChain.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChainBuilder.kt b/mirai-core-api/src/commonMain/kotlin/message/data/MessageChainBuilder.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageChainBuilder.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/MessageChainBuilder.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSource.kt b/mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSource.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/MessageSource.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSourceBuilder.kt b/mirai-core-api/src/commonMain/kotlin/message/data/MessageSourceBuilder.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/MessageSourceBuilder.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/MessageSourceBuilder.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt b/mirai-core-api/src/commonMain/kotlin/message/data/PlainText.kt similarity index 95% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/PlainText.kt index 161e248d3..e64cecaec 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/PlainText.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/PlainText.kt @@ -52,7 +52,7 @@ public data class PlainText( */ @Deprecated( "为和 mirai code 区分, 请使用 PlainText(this)", - ReplaceWith("PlainText(this)", "net.mamoe.mirai.message.data.PlainText"), + ReplaceWith("PlainText(this)", "PlainText"), level = DeprecationLevel.WARNING ) @JvmSynthetic diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/QuoteReply.kt b/mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/QuoteReply.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/QuoteReply.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/README.md b/mirai-core-api/src/commonMain/kotlin/message/data/README.md similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/README.md rename to mirai-core-api/src/commonMain/kotlin/message/data/README.md diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/RichMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/RichMessage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/RichMessage.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/RichMessage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Voice.kt b/mirai-core-api/src/commonMain/kotlin/message/data/Voice.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Voice.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/Voice.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/imageDeprecated.kt b/mirai-core-api/src/commonMain/kotlin/message/data/imageDeprecated.kt similarity index 91% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/imageDeprecated.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/imageDeprecated.kt index dd8296694..f34a9ca9a 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/imageDeprecated.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/imageDeprecated.kt @@ -48,7 +48,7 @@ internal const val ONLINE_OFFLINE_DEPRECATION_MESSAGE = """ @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) @Suppress("EXPOSED_SUPER_INTERFACE") public interface OnlineImage : Image, ConstOriginUrlAware { @@ -69,7 +69,7 @@ public interface OnlineImage : Image, ConstOriginUrlAware { @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) public interface OfflineImage : Image { public companion object Key : Message.Key { @@ -96,7 +96,7 @@ public suspend fun OfflineImage.queryUrl(): String { @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) @Serializable public data class OfflineGroupImage( @@ -124,7 +124,7 @@ public data class OfflineGroupImage( @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) public abstract class OnlineGroupImage : GroupImage(), OnlineImage @@ -137,7 +137,7 @@ public abstract class OnlineGroupImage : GroupImage(), OnlineImage @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) @Serializable public data class OfflineFriendImage( @@ -161,7 +161,7 @@ public data class OfflineFriendImage( @Deprecated( ONLINE_OFFLINE_DEPRECATION_MESSAGE, level = DeprecationLevel.ERROR, - replaceWith = ReplaceWith("Image", "net.mamoe.mirai.message.data.Image") + replaceWith = ReplaceWith("Image", "Image") ) public abstract class OnlineFriendImage : FriendImage(), OnlineImage diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/impl.kt b/mirai-core-api/src/commonMain/kotlin/message/data/impl.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/impl.kt rename to mirai-core-api/src/commonMain/kotlin/message/data/impl.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/deprecated.kt b/mirai-core-api/src/commonMain/kotlin/message/deprecated.kt similarity index 87% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/deprecated.kt rename to mirai-core-api/src/commonMain/kotlin/message/deprecated.kt index 43ff1ab39..1d2dc5ed5 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/deprecated.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/deprecated.kt @@ -23,9 +23,9 @@ import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.* import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.events.BotEvent +import net.mamoe.mirai.internal.network.Packet import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.OnlineMessageSource -import net.mamoe.mirai.qqandroid.network.Packet import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName @@ -35,7 +35,7 @@ import kotlin.jvm.JvmName */ @Deprecated( message = "use MessageEvent", - replaceWith = ReplaceWith("MessageEvent", "net.mamoe.mirai.message.MessageEvent"), + replaceWith = ReplaceWith("MessageEvent", "MessageEvent"), level = DeprecationLevel.HIDDEN ) public abstract class MessagePacketBase : Packet, BotEvent, @@ -51,7 +51,7 @@ public abstract class MessagePacketBase(), @Deprecated( message = "Ambiguous name. Use MessageEvent instead", - replaceWith = ReplaceWith("MessageEvent", "net.mamoe.mirai.message.MessageEvent"), + replaceWith = ReplaceWith("MessageEvent", "MessageEvent"), level = DeprecationLevel.HIDDEN ) @Suppress("DEPRECATION_ERROR") @@ -85,7 +85,7 @@ public abstract class ContactMessage : MessagePacket(), @Deprecated( message = "Ambiguous name. Use FriendMessageEvent instead", - replaceWith = ReplaceWith("FriendMessageEvent", "net.mamoe.mirai.message.FriendMessageEvent"), + replaceWith = ReplaceWith("FriendMessageEvent", "FriendMessageEvent"), level = DeprecationLevel.HIDDEN ) @Suppress("DEPRECATION_ERROR") @@ -101,7 +101,7 @@ public abstract class FriendMessage : MessageEvent() { @Deprecated( message = "Ambiguous name. Use GroupMessageEvent instead", - replaceWith = ReplaceWith("GroupMessageEvent", "net.mamoe.mirai.message.GroupMessageEvent"), + replaceWith = ReplaceWith("GroupMessageEvent", "GroupMessageEvent"), level = DeprecationLevel.HIDDEN ) @Suppress("DEPRECATION_ERROR") @@ -118,7 +118,7 @@ public abstract class GroupMessage : MessageEvent() { @Deprecated( message = "Ambiguous name. Use TempMessageEvent instead", - replaceWith = ReplaceWith("TempMessageEvent", "net.mamoe.mirai.message.TempMessageEvent"), + replaceWith = ReplaceWith("TempMessageEvent", "TempMessageEvent"), level = DeprecationLevel.HIDDEN ) public abstract class TempMessage : MessageEvent() { diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/utils.kt b/mirai-core-api/src/commonMain/kotlin/message/utils.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/utils.kt rename to mirai-core-api/src/commonMain/kotlin/message/utils.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/ForceOfflineException.kt b/mirai-core-api/src/commonMain/kotlin/network/ForceOfflineException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/ForceOfflineException.kt rename to mirai-core-api/src/commonMain/kotlin/network/ForceOfflineException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/LoginFailedException.kt b/mirai-core-api/src/commonMain/kotlin/network/LoginFailedException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/network/LoginFailedException.kt rename to mirai-core-api/src/commonMain/kotlin/network/LoginFailedException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/qqandroid.network/Packet.kt b/mirai-core-api/src/commonMain/kotlin/qqandroid.network/Packet.kt similarity index 95% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/qqandroid.network/Packet.kt rename to mirai-core-api/src/commonMain/kotlin/qqandroid.network/Packet.kt index 4be6949e2..895f29039 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/qqandroid.network/Packet.kt +++ b/mirai-core-api/src/commonMain/kotlin/qqandroid.network/Packet.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network import net.mamoe.mirai.event.Event import net.mamoe.mirai.utils.MiraiInternalAPI diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Annotations.kt b/mirai-core-api/src/commonMain/kotlin/utils/Annotations.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Annotations.kt rename to mirai-core-api/src/commonMain/kotlin/utils/Annotations.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/BotConfiguration.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/BotConfiguration.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/BotConfiguration.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Channels.kt b/mirai-core-api/src/commonMain/kotlin/utils/Channels.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Channels.kt rename to mirai-core-api/src/commonMain/kotlin/utils/Channels.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Context.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/Context.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/Context.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/Context.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/DeviceInfo.kt b/mirai-core-api/src/commonMain/kotlin/utils/DeviceInfo.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/DeviceInfo.kt rename to mirai-core-api/src/commonMain/kotlin/utils/DeviceInfo.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/ExternalImage.kt b/mirai-core-api/src/commonMain/kotlin/utils/ExternalImage.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/ExternalImage.kt rename to mirai-core-api/src/commonMain/kotlin/utils/ExternalImage.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/FileCacheStrategy.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/FileCacheStrategy.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/FileCacheStrategy.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/FileCacheStrategy.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LazyProperty.kt b/mirai-core-api/src/commonMain/kotlin/utils/LazyProperty.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LazyProperty.kt rename to mirai-core-api/src/commonMain/kotlin/utils/LazyProperty.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LockFreeLinkedList.kt b/mirai-core-api/src/commonMain/kotlin/utils/LockFreeLinkedList.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LockFreeLinkedList.kt rename to mirai-core-api/src/commonMain/kotlin/utils/LockFreeLinkedList.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LoginSolver.kt b/mirai-core-api/src/commonMain/kotlin/utils/LoginSolver.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/LoginSolver.kt rename to mirai-core-api/src/commonMain/kotlin/utils/LoginSolver.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt b/mirai-core-api/src/commonMain/kotlin/utils/MiraiLogger.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/MiraiLogger.kt rename to mirai-core-api/src/commonMain/kotlin/utils/MiraiLogger.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/OverFileSizeMaxException.kt b/mirai-core-api/src/commonMain/kotlin/utils/OverFileSizeMaxException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/OverFileSizeMaxException.kt rename to mirai-core-api/src/commonMain/kotlin/utils/OverFileSizeMaxException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/SoftRef.kt b/mirai-core-api/src/commonMain/kotlin/utils/SoftRef.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/SoftRef.kt rename to mirai-core-api/src/commonMain/kotlin/utils/SoftRef.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/SystemDeviceInfo.kt b/mirai-core-api/src/commonMain/kotlin/utils/SystemDeviceInfo.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/SystemDeviceInfo.kt rename to mirai-core-api/src/commonMain/kotlin/utils/SystemDeviceInfo.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/TimeUtils.kt b/mirai-core-api/src/commonMain/kotlin/utils/TimeUtils.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/TimeUtils.kt rename to mirai-core-api/src/commonMain/kotlin/utils/TimeUtils.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/WeakRef.kt b/mirai-core-api/src/commonMain/kotlin/utils/WeakRef.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/WeakRef.kt rename to mirai-core-api/src/commonMain/kotlin/utils/WeakRef.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/ChunkedFlowSession.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/ChunkedFlowSession.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/ChunkedFlowSession.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/ChunkedFlowSession.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/DeferredReusableInput.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/DeferredReusableInput.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/DeferredReusableInput.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/DeferredReusableInput.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/ReusableInput.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/ReusableInput.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/ReusableInput.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/ReusableInput.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/asReusableInput.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/asReusableInput.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/asReusableInput.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/asReusableInput.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/md5.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/md5.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/md5.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/md5.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/retryCatching.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/retryCatching.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/retryCatching.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/retryCatching.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/runBlocking.common.kt b/mirai-core-api/src/commonMain/kotlin/utils/internal/runBlocking.common.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/internal/runBlocking.common.kt rename to mirai-core-api/src/commonMain/kotlin/utils/internal/runBlocking.common.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/BufferedInputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/BufferedInputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/BufferedInputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/BufferedInputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/BufferedOutputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/BufferedOutputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/BufferedOutputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/BufferedOutputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ByteArrayInputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ByteArrayInputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ByteArrayInputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ByteArrayInputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ByteArrayOutputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ByteArrayOutputStream.kt similarity index 75% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ByteArrayOutputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ByteArrayOutputStream.kt index c01d87bb9..5f909e097 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ByteArrayOutputStream.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ByteArrayOutputStream.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Closeable.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Closeable.kt similarity index 86% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Closeable.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Closeable.kt index 8e94a250a..c77b71bc7 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Closeable.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Closeable.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/DataInput.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/DataInput.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/DataInput.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/DataInput.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/DataOutput.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/DataOutput.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/DataOutput.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/DataOutput.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/EOFException.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/EOFException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/EOFException.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/EOFException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/File.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/File.kt similarity index 89% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/File.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/File.kt index 5e87fbcac..59c25b582 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/File.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/File.kt @@ -1,14 +1,11 @@ /* + * Copyright 2019-2020 Mamoe Technologies and contributors. * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * + * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileDescriptor.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileDescriptor.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileDescriptor.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileDescriptor.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileInputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileInputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileInputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileInputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileOutputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileOutputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FileOutputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FileOutputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FilterInputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FilterInputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FilterInputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FilterInputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FilterOutputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FilterOutputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/FilterOutputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/FilterOutputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/IOException.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/IOException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/IOException.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/IOException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/InputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/InputStream.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/InputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/InputStream.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ObjectInput.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ObjectInput.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/ObjectInput.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/ObjectInput.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/OutputStream.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/OutputStream.kt similarity index 78% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/OutputStream.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/OutputStream.kt index bae5375a2..87025f2cb 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/OutputStream.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/OutputStream.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/WeakRefAndroid.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Serializable.kt similarity index 55% rename from mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/WeakRefAndroid.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Serializable.kt index 9d22c42b1..6b9bb0c3d 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/WeakRefAndroid.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/io/Serializable.kt @@ -6,9 +6,20 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ +@file:Suppress( + "unused", + "NO_ACTUAL_FOR_EXPECT", + "PackageDirectoryMismatch", + "NON_FINAL_MEMBER_IN_FINAL_CLASS", + "VIRTUAL_MEMBER_HIDDEN" +) -package net.mamoe.mirai.utils +/** + * Bindings for JDK. + * + * All the sources are copied from OpenJDK. Copyright OpenJDK authors. + */ -import java.lang.ref.WeakReference +package java.io -actual typealias WeakRef = WeakReference \ No newline at end of file +public expect interface Serializable \ No newline at end of file diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Inet4Address.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Inet4Address.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Inet4Address.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Inet4Address.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Inet6Address.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Inet6Address.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Inet6Address.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Inet6Address.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/InetAddress.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/InetAddress.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/InetAddress.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/InetAddress.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/InetSocketAddress.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/InetSocketAddress.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/InetSocketAddress.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/InetSocketAddress.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Proxy.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Proxy.kt similarity index 80% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Proxy.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Proxy.kt index 18c05279c..9170dcbe0 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Proxy.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Proxy.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Socket.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Socket.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/Socket.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/Socket.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketAddress.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketAddress.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketAddress.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketAddress.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketException.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketException.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketException.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketException.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketOption.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketOption.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketOption.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketOption.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketOptions.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketOptions.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/SocketOptions.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/SocketOptions.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URI.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URI.kt similarity index 91% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URI.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URI.kt index 97e5896d5..e069d19d9 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URI.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URI.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URL.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URL.kt similarity index 91% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URL.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URL.kt index 062ce28c3..ca746cc43 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URL.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URL.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URLConnection.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URLConnection.kt similarity index 95% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URLConnection.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URLConnection.kt index 2eb6fbeb0..1534f5b49 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/net/URLConnection.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/net/URLConnection.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Buffer.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Buffer.kt similarity index 97% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Buffer.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Buffer.kt index 6baebc72a..f9e58b6c3 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Buffer.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Buffer.kt @@ -1,14 +1,11 @@ /* + * Copyright 2019-2020 Mamoe Technologies and contributors. * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE - * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteBuffer.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteBuffer.kt similarity index 99% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteBuffer.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteBuffer.kt index 57282a075..ab1c69995 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteBuffer.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteBuffer.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteOrder.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteOrder.kt similarity index 89% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteOrder.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteOrder.kt index 431bab313..bc989f909 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/ByteOrder.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/ByteOrder.kt @@ -1,12 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("unused", "NO_ACTUAL_FOR_EXPECT", "PackageDirectoryMismatch") /** diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/FileSystem.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/FileSystem.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/FileSystem.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/FileSystem.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Path.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Path.kt similarity index 84% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Path.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Path.kt index 963011193..c52da3677 100644 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Path.kt +++ b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Path.kt @@ -1,14 +1,11 @@ /* + * Copyright 2019-2020 Mamoe Technologies and contributors. * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * + * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "unused", "NO_ACTUAL_FOR_EXPECT", diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Paths.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Paths.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Paths.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Paths.kt diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Watchable.kt b/mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Watchable.kt similarity index 100% rename from mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/nio/Watchable.kt rename to mirai-core-api/src/commonMain/kotlin/utils/java.bindings/nio/Watchable.kt diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/CombinedMessageTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/CombinedMessageTest.kt similarity index 82% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/CombinedMessageTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/CombinedMessageTest.kt index 7df42f35e..b92a8b834 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/CombinedMessageTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/CombinedMessageTest.kt @@ -1,4 +1,12 @@ -package net.mamoe.mirai.message.data +/* + * Copyright 2019-2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertEquals diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/ConstrainSingleTest.kt similarity index 99% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/ConstrainSingleTest.kt index 91d7ccbc2..928c6e941 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ConstrainSingleTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/ConstrainSingleTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.message.data +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertEquals diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ContentEqualsTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/ContentEqualsTest.kt similarity index 98% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ContentEqualsTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/ContentEqualsTest.kt index 9c4885806..e173767a3 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ContentEqualsTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/ContentEqualsTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.message.data +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertFalse diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ImageTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/ImageTest.kt similarity index 98% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ImageTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/ImageTest.kt index 1c492f521..de218d050 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/ImageTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/ImageTest.kt @@ -6,10 +6,9 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("EXPERIMENTAL_API_USAGE") -package net.mamoe.mirai.message.data +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertEquals diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageChainBuilderTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/MessageChainBuilderTest.kt similarity index 97% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageChainBuilderTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/MessageChainBuilderTest.kt index 009292a1a..36da61dbd 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageChainBuilderTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/MessageChainBuilderTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.message.data +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertEquals diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageUtilsTest.kt b/mirai-core-api/src/commonTest/kotlin/message.data/MessageUtilsTest.kt similarity index 95% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageUtilsTest.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/MessageUtilsTest.kt index 31512df54..1c9ba8969 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/MessageUtilsTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/MessageUtilsTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.message.data +package net.mamoe.mirai.message.data import kotlin.test.Test import kotlin.test.assertTrue diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/TestMessageChainDelegate.kt b/mirai-core-api/src/commonTest/kotlin/message.data/TestMessageChainDelegate.kt similarity index 99% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/TestMessageChainDelegate.kt rename to mirai-core-api/src/commonTest/kotlin/message.data/TestMessageChainDelegate.kt index 8f8908a49..783e68467 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/message.data/TestMessageChainDelegate.kt +++ b/mirai-core-api/src/commonTest/kotlin/message.data/TestMessageChainDelegate.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - package net.mamoe.mirai.message.data import kotlin.test.Test diff --git a/mirai-core-api/src/commonTest/kotlin/package.kt b/mirai-core-api/src/commonTest/kotlin/package.kt new file mode 100644 index 000000000..a04ac80e4 --- /dev/null +++ b/mirai-core-api/src/commonTest/kotlin/package.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ +package net.mamoe.mirai \ No newline at end of file diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/test/TestDSL.kt b/mirai-core-api/src/commonTest/kotlin/test/TestDSL.kt similarity index 99% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/test/TestDSL.kt rename to mirai-core-api/src/commonTest/kotlin/test/TestDSL.kt index 7e503bfbf..980435979 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/test/TestDSL.kt +++ b/mirai-core-api/src/commonTest/kotlin/test/TestDSL.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("NOTHING_TO_INLINE") package net.mamoe.mirai.test diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/platformAndroid.kt b/mirai-core-api/src/commonTest/kotlin/utils/ExternalImageTest.kt similarity index 58% rename from mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/platformAndroid.kt rename to mirai-core-api/src/commonTest/kotlin/utils/ExternalImageTest.kt index b80b6ee7e..d95a68a17 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/platformAndroid.kt +++ b/mirai-core-api/src/commonTest/kotlin/utils/ExternalImageTest.kt @@ -6,14 +6,17 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -@file:Suppress("NOTHING_TO_INLINE") -@file:JvmMultifileClass -@file:JvmName("Utils") - package net.mamoe.mirai.utils -/** - * 时间戳 - */ -actual val currentTimeMillis: Long get() = System.currentTimeMillis() +import kotlin.test.Test +import kotlin.test.assertEquals + +internal class ExternalImageTest { + + @Test + fun testByteArrayGet() { + assertEquals("0F", byteArrayOf(0x0f)[0, 0]) + assertEquals("10", byteArrayOf(0x10)[0, 0]) + assertEquals("0FFE", byteArrayOf(0x0F, 0xFE.toByte())[0, 1]) + } +} \ No newline at end of file diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/TimeTest.kt b/mirai-core-api/src/commonTest/kotlin/utils/TimeTest.kt similarity index 83% rename from mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/TimeTest.kt rename to mirai-core-api/src/commonTest/kotlin/utils/TimeTest.kt index ea40ae231..85e63e200 100644 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/TimeTest.kt +++ b/mirai-core-api/src/commonTest/kotlin/utils/TimeTest.kt @@ -1,11 +1,11 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. + * Copyright 2019-2020 Mamoe Technologies and contributors. + * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - package net.mamoe.mirai.utils import kotlin.test.Test diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactory.kt b/mirai-core-api/src/jvmMain/kotlin/BotFactory.kt similarity index 96% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactory.kt rename to mirai-core-api/src/jvmMain/kotlin/BotFactory.kt index 4cbef2656..85dbeccf9 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotFactory.kt +++ b/mirai-core-api/src/jvmMain/kotlin/BotFactory.kt @@ -25,10 +25,10 @@ import net.mamoe.mirai.utils.SinceMirai * ### 自动选择协议模块并构造 [Bot] * 在 Kotlin 使用包级函数 [Bot], 在 Java 使用 `BotFactoryJvm.newBot` * - * mirai 通过 [Class.forName] 查找可用的协议实现, 如 `net.mamoe.mirai.qqandroid.QQAndroid` + * mirai 通过 [Class.forName] 查找可用的协议实现, 如 `net.mamoe.mirai.internal.QQAndroid` * * ### 手动选择协议模块并构造 [Bot] - * 引用 `net.mamoe.mirai.qqandroid.QQAndroid` 并使用其成员函数 [Bot] + * 引用 `net.mamoe.mirai.internal.QQAndroid` 并使用其成员函数 [Bot] */ public actual interface BotFactory { /** @@ -159,7 +159,7 @@ internal val factory: BotFactory = run { Class.forName("net.mamoe.mirai.timpc.TIMPC").kotlin.objectInstance as BotFactory }.getOrElse { runCatching { - Class.forName("net.mamoe.mirai.qqandroid.QQAndroid").kotlin.objectInstance as BotFactory + Class.forName("net.mamoe.mirai.internal.QQAndroid").kotlin.objectInstance as BotFactory }.getOrNull() } } ?: error( diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt b/mirai-core-api/src/jvmMain/kotlin/BotJavaFriendlyAPI.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt rename to mirai-core-api/src/jvmMain/kotlin/BotJavaFriendlyAPI.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt b/mirai-core-api/src/jvmMain/kotlin/contact/ContactJavaFriendlyAPI.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt rename to mirai-core-api/src/jvmMain/kotlin/contact/ContactJavaFriendlyAPI.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/JvmMethodListeners.kt b/mirai-core-api/src/jvmMain/kotlin/event/JvmMethodListeners.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/JvmMethodListeners.kt rename to mirai-core-api/src/jvmMain/kotlin/event/JvmMethodListeners.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/EventInternalJvm.kt b/mirai-core-api/src/jvmMain/kotlin/event/internal/EventInternalJvm.kt similarity index 99% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/EventInternalJvm.kt rename to mirai-core-api/src/jvmMain/kotlin/event/internal/EventInternalJvm.kt index 73d0527b3..a3a5438e9 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/EventInternalJvm.kt +++ b/mirai-core-api/src/jvmMain/kotlin/event/internal/EventInternalJvm.kt @@ -49,7 +49,6 @@ internal fun Class._subscribeEventForJaptOnly(scope: CoroutineSco } - @Suppress("UNCHECKED_CAST") internal fun Method.registerEvent( owner: Any, diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/GlobalEventListeners.kt b/mirai-core-api/src/jvmMain/kotlin/event/internal/GlobalEventListeners.kt similarity index 81% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/GlobalEventListeners.kt rename to mirai-core-api/src/jvmMain/kotlin/event/internal/GlobalEventListeners.kt index 5ab3f8828..87d3c1bdf 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/GlobalEventListeners.kt +++ b/mirai-core-api/src/jvmMain/kotlin/event/internal/GlobalEventListeners.kt @@ -18,13 +18,15 @@ internal actual object GlobalEventListeners { private val ALL_LEVEL_REGISTRIES: Map> init { - val map = EnumMap>(Listener.EventPriority::class.java) + val map = + EnumMap>(Listener.EventPriority::class.java) Listener.EventPriority.values().forEach { map[it] = LockFreeLinkedList() } this.ALL_LEVEL_REGISTRIES = map } - actual operator fun get(priority: Listener.EventPriority): LockFreeLinkedList = ALL_LEVEL_REGISTRIES[priority]!! + actual operator fun get(priority: Listener.EventPriority): LockFreeLinkedList = + ALL_LEVEL_REGISTRIES[priority]!! } diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt b/mirai-core-api/src/jvmMain/kotlin/event/internal/MiraiAtomicBoolean.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt rename to mirai-core-api/src/jvmMain/kotlin/event/internal/MiraiAtomicBoolean.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/MessageEventPlatform.kt b/mirai-core-api/src/jvmMain/kotlin/message/MessageEventPlatform.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/MessageEventPlatform.kt rename to mirai-core-api/src/jvmMain/kotlin/message/MessageEventPlatform.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/SendImageUtilsJvm.kt b/mirai-core-api/src/jvmMain/kotlin/message/SendImageUtilsJvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/SendImageUtilsJvm.kt rename to mirai-core-api/src/jvmMain/kotlin/message/SendImageUtilsJvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/data/Image.kt b/mirai-core-api/src/jvmMain/kotlin/message/data/Image.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/data/Image.kt rename to mirai-core-api/src/jvmMain/kotlin/message/data/Image.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/deprecated.kt b/mirai-core-api/src/jvmMain/kotlin/message/deprecated.kt similarity index 99% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/deprecated.kt rename to mirai-core-api/src/jvmMain/kotlin/message/deprecated.kt index 94ed456a5..039c44c16 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/message/deprecated.kt +++ b/mirai-core-api/src/jvmMain/kotlin/message/deprecated.kt @@ -51,7 +51,6 @@ public suspend fun Input.sendAsImageTo(contact: C): MessageReceipt toExternalImage().sendTo(contact) - /** * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片上传后构造 [Image] * @throws OverFileSizeMaxException diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfiguration.kt b/mirai-core-api/src/jvmMain/kotlin/utils/BotConfiguration.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/BotConfiguration.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/BotConfiguration.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/Context.kt b/mirai-core-api/src/jvmMain/kotlin/utils/Context.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/Context.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/Context.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/ExternalImageJvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/ExternalImageJvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/ExternalImageJvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/ExternalImageJvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/FileCacheStrategy.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/FileCacheStrategy.jvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/FileCacheStrategy.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/FileCacheStrategy.jvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/FileLogger.kt b/mirai-core-api/src/jvmMain/kotlin/utils/FileLogger.kt similarity index 94% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/FileLogger.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/FileLogger.kt index 93166e6f7..83a5cf6c4 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/FileLogger.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/FileLogger.kt @@ -21,7 +21,10 @@ private val currentDate get() = SimpleDateFormat("yyyy-MM-dd").format(Date()) * * @see PlatformLogger 查看格式信息 */ -public class SingleFileLogger @JvmOverloads constructor(identity: String, file: File = File("$identity-$currentDate.log")) : +public class SingleFileLogger @JvmOverloads constructor( + identity: String, + file: File = File("$identity-$currentDate.log") +) : PlatformLogger(identity, { file.appendText(it + "\n") }, false) { init { diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/HyperLinkLabel.kt b/mirai-core-api/src/jvmMain/kotlin/utils/HyperLinkLabel.kt similarity index 59% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/HyperLinkLabel.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/HyperLinkLabel.kt index af6e2b881..ba0bbd1ee 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/HyperLinkLabel.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/HyperLinkLabel.kt @@ -1,3 +1,12 @@ +/* + * Copyright 2019-2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ + package net.mamoe.mirai.utils import java.awt.Desktop @@ -11,7 +20,7 @@ import javax.swing.JLabel */ internal class HyperLinkLabel constructor(url: String, text: String) : JLabel() { init { - super.setText("$text"); + super.setText("$text") addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) { diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoggerAdapters.kt b/mirai-core-api/src/jvmMain/kotlin/utils/LoggerAdapters.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoggerAdapters.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/LoggerAdapters.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/LoginSolver.jvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/LoginSolver.jvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.swing.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/LoginSolver.swing.jvm.kt similarity index 81% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.swing.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/LoginSolver.swing.jvm.kt index b67bb6702..3972579da 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/LoginSolver.swing.jvm.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/LoginSolver.swing.jvm.kt @@ -15,36 +15,37 @@ import java.net.URI import javax.imageio.ImageIO import javax.swing.ImageIcon import javax.swing.JLabel -import javax.swing.JTextField /** * @author Karlatemp */ @MiraiExperimentalAPI public object SwingSolver : LoginSolver() { - public override suspend fun onSolvePicCaptcha(bot: Bot, data: ByteArray): String? { + public override suspend fun onSolvePicCaptcha(bot: Bot, data: ByteArray): String? { return openWindow("Mirai PicCaptcha(${bot.id})") { val image = ImageIO.read(data.inputStream()) JLabel(ImageIcon(image)).append() } } - public override suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? { + public override suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? { return openWindow("Mirai SliderCaptcha(${bot.id})") { JLabel("需要滑动验证码, 完成后请关闭该窗口").append() Desktop.getDesktop().browse(URI(url)) } } - public override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? { + public override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? { return openWindow("Mirai UnsafeDeviceLoginVerify(${bot.id})") { - JLabel(""" + JLabel( + """ 需要进行账户安全认证
该账户有[设备锁]/[不常用登录地点]/[不常用设备登录]的问题
完成以下账号认证即可成功登录|理论本认证在mirai每个账户中最多出现1次
成功后请关闭该窗口 - """.trimIndent()).append() + """.trimIndent() + ).append() HyperLinkLabel(url, "设备锁验证").last() } } diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt b/mirai-core-api/src/jvmMain/kotlin/utils/OverFileSizeMaxException.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/OverFileSizeMaxException.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/PlatformLogger.jvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/PlatformLogger.jvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsJvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/PlatformUtilsJvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/PlatformUtilsJvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/PlatformUtilsJvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.kt b/mirai-core-api/src/jvmMain/kotlin/utils/SystemDeviceInfo.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/SystemDeviceInfo.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WeakRef.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/WeakRef.jvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WeakRef.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/WeakRef.jvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/WindowHelperJvm.kt similarity index 99% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/WindowHelperJvm.kt index 315a438fe..950671986 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/WindowHelperJvm.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/WindowHelperJvm.kt @@ -23,7 +23,6 @@ import java.awt.event.KeyListener import java.awt.event.WindowAdapter import java.awt.event.WindowEvent import java.awt.image.BufferedImage -import java.io.File import javax.imageio.ImageIO import javax.swing.JFrame import javax.swing.JTextField diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/DeferredReusableInput.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/DeferredReusableInput.jvm.kt similarity index 99% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/DeferredReusableInput.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/DeferredReusableInput.jvm.kt index 861b9d9cd..acc4bea23 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/DeferredReusableInput.jvm.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/internal/DeferredReusableInput.jvm.kt @@ -24,7 +24,6 @@ internal actual class DeferredReusableInput actual constructor( ) : ReusableInput { - actual suspend fun init(strategy: FileCacheStrategy) = withContext(Dispatchers.IO) { if (delegate != null) { return@withContext diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/asReusableInput.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/asReusableInput.jvm.kt similarity index 89% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/asReusableInput.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/asReusableInput.jvm.kt index a066a729a..91684ea6d 100644 --- a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/asReusableInput.jvm.kt +++ b/mirai-core-api/src/jvmMain/kotlin/utils/internal/asReusableInput.jvm.kt @@ -30,7 +30,10 @@ internal actual fun ByteArray.asReusableInput(): ReusableInput { override fun chunkedFlow(sizePerPacket: Int): ChunkedFlowSession { return object : ChunkedFlowSession { private val stream = inputStream() - override val flow: Flow = stream.chunkedFlow(sizePerPacket, ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket))) + override val flow: Flow = stream.chunkedFlow( + sizePerPacket, + ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket)) + ) override fun close() { stream.close() @@ -59,7 +62,11 @@ internal fun File.asReusableInput(deleteOnClose: Boolean): ReusableInput { override fun chunkedFlow(sizePerPacket: Int): ChunkedFlowSession { val stream = inputStream() return object : ChunkedFlowSession { - override val flow: Flow = stream.chunkedFlow(sizePerPacket, ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket))) + override val flow: Flow = stream.chunkedFlow( + sizePerPacket, + ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket)) + ) + override fun close() { stream.close() if (deleteOnClose) this@asReusableInput.delete() @@ -85,7 +92,11 @@ internal fun File.asReusableInput(deleteOnClose: Boolean, md5: ByteArray): Reusa override fun chunkedFlow(sizePerPacket: Int): ChunkedFlowSession { val stream = inputStream() return object : ChunkedFlowSession { - override val flow: Flow = stream.chunkedFlow(sizePerPacket, ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket))) + override val flow: Flow = stream.chunkedFlow( + sizePerPacket, + ByteArray(DEFAULT_REUSABLE_INPUT_BUFFER_SIZE.coerceAtLeast(sizePerPacket)) + ) + override fun close() { stream.close() if (deleteOnClose) this@asReusableInput.delete() diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/JdkLogger.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/JdkLogger.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/JdkLogger.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/JdkLogger.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/Log4jLogger.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/Log4jLogger.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/Log4jLogger.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/Log4jLogger.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/Slf4jLogger.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/Slf4jLogger.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/logging/Slf4jLogger.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/logging/Slf4jLogger.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/md5.jvm.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/md5.jvm.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/md5.jvm.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/md5.jvm.kt diff --git a/mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt b/mirai-core-api/src/jvmMain/kotlin/utils/internal/runBlocking.kt similarity index 100% rename from mirai-core/src/jvmMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt rename to mirai-core-api/src/jvmMain/kotlin/utils/internal/runBlocking.kt diff --git a/mirai-core/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png b/mirai-core-api/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png similarity index 100% rename from mirai-core/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png rename to mirai-core-api/src/jvmMain/resources/net/mamoe/mirai/utils/project-mirai.png diff --git a/mirai-core/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java b/mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java similarity index 100% rename from mirai-core/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java rename to mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/CancelScopeTest.kt b/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt similarity index 89% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/CancelScopeTest.kt rename to mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt index ab45d1324..949a59b19 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/CancelScopeTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt @@ -6,12 +6,11 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - package net.mamoe.mirai.event import kotlinx.coroutines.* -import net.mamoe.mirai.event.events.MemberJoinEvent -import net.mamoe.mirai.event.events.MemberMuteEvent +import net.mamoe.mirai.event.broadcast +import net.mamoe.mirai.event.subscribeAlways import org.junit.Test import kotlin.test.assertFalse diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/EventTests.kt b/mirai-core-api/src/jvmTest/kotlin/event/EventTests.kt similarity index 99% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/EventTests.kt rename to mirai-core-api/src/jvmTest/kotlin/event/EventTests.kt index ece3eb897..5b165f963 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/EventTests.kt +++ b/mirai-core-api/src/jvmTest/kotlin/event/EventTests.kt @@ -10,6 +10,7 @@ package net.mamoe.mirai.event import kotlinx.coroutines.* +import net.mamoe.mirai.event.* import net.mamoe.mirai.event.internal.GlobalEventListeners import net.mamoe.mirai.utils.StepUtil import net.mamoe.mirai.utils.internal.runBlocking diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/JvmMethodEventsTest.kt b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt similarity index 96% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/JvmMethodEventsTest.kt rename to mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt index e469be97b..d53a8cd24 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/event/JvmMethodEventsTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt @@ -6,13 +6,13 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("RedundantSuspendModifier", "unused", "UNUSED_PARAMETER") package net.mamoe.mirai.event import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.runBlocking +import net.mamoe.mirai.event.* import org.jetbrains.annotations.NotNull import org.junit.Test import java.util.concurrent.atomic.AtomicInteger @@ -108,13 +108,13 @@ internal class JvmMethodEventsTest { fun getCalled() = called.get() @Suppress("unused") - @EventHandler(EventPriority.HIGHEST) + @EventHandler(Listener.EventPriority.HIGHEST) private suspend fun TestEvent.`suspend receiver param Unit`(event: TestEvent) { intercept() called.getAndIncrement() } - @EventHandler(EventPriority.MONITOR) + @EventHandler(Listener.EventPriority.MONITOR) @Suppress("unused") private fun TestEvent.`receiver param LS`(event: TestEvent): ListeningStatus { called.getAndIncrement() diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/message/SubscribingGetTest.kt b/mirai-core-api/src/jvmTest/kotlin/message/SubscribingGetTest.kt similarity index 94% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/message/SubscribingGetTest.kt rename to mirai-core-api/src/jvmTest/kotlin/message/SubscribingGetTest.kt index f7692a665..4e0f6d676 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/message/SubscribingGetTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/message/SubscribingGetTest.kt @@ -11,11 +11,9 @@ package net.mamoe.mirai.message import kotlinx.coroutines.* import net.mamoe.mirai.event.TestEvent -import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.syncFromEvent import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext -import kotlin.coroutines.resume import kotlin.test.Test import kotlin.test.assertFailsWith diff --git a/compatibility-validator/src/main/kotlin/compatibility/testKotlinCompatibility.kt b/mirai-core-api/src/jvmTest/kotlin/package.kt similarity index 91% rename from compatibility-validator/src/main/kotlin/compatibility/testKotlinCompatibility.kt rename to mirai-core-api/src/jvmTest/kotlin/package.kt index 2d8603588..eb9e446d0 100644 --- a/compatibility-validator/src/main/kotlin/compatibility/testKotlinCompatibility.kt +++ b/mirai-core-api/src/jvmTest/kotlin/package.kt @@ -7,8 +7,4 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package compatibility - -fun main() { - -} \ No newline at end of file +package net.mamoe.mirai \ No newline at end of file diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/LockFreeLinkedListTest.kt b/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt similarity index 98% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/LockFreeLinkedListTest.kt rename to mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt index 78461fd4d..b6b4eb833 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/LockFreeLinkedListTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt @@ -12,6 +12,8 @@ package net.mamoe.mirai.utils import kotlinx.coroutines.* +import net.mamoe.mirai.utils.LockFreeLinkedList +import net.mamoe.mirai.utils.MiraiExperimentalAPI import net.mamoe.mirai.test.shouldBeEqualTo import net.mamoe.mirai.test.shouldBeTrue import kotlin.test.Test diff --git a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/StepUtil.kt b/mirai-core-api/src/jvmTest/kotlin/utils/StepUtil.kt similarity index 94% rename from mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/StepUtil.kt rename to mirai-core-api/src/jvmTest/kotlin/utils/StepUtil.kt index d679ddcbf..d4ee71775 100644 --- a/mirai-core/src/jvmTest/kotlin/net/mamoe/mirai/utils/StepUtil.kt +++ b/mirai-core-api/src/jvmTest/kotlin/utils/StepUtil.kt @@ -1,5 +1,4 @@ /* - * Copyright 2019-2020 Mamoe Technologies and contributors. * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. diff --git a/mirai-core-qqandroid/src/main/AndroidManifest.xml b/mirai-core-api/src/main/AndroidManifest.xml similarity index 65% rename from mirai-core-qqandroid/src/main/AndroidManifest.xml rename to mirai-core-api/src/main/AndroidManifest.xml index 7a4cf1cf2..544a92e64 100644 --- a/mirai-core-qqandroid/src/main/AndroidManifest.xml +++ b/mirai-core-api/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/mirai-core-qqandroid/README.md b/mirai-core-qqandroid/README.md deleted file mode 100644 index f75364fbb..000000000 --- a/mirai-core-qqandroid/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# mirai-core-qqandroid - - -QQ for Android 8.2.7 协议实现. -相较于 `mirai-core`, 此模块仅提供协议和功能的实现, 不提供额外的公开的 API. \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt deleted file mode 100644 index 4413f9d92..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("DEPRECATION_ERROR") - -package net.mamoe.mirai.qqandroid - -import net.mamoe.mirai.Bot -import net.mamoe.mirai.BotFactory -import net.mamoe.mirai.utils.BotConfiguration -import net.mamoe.mirai.utils.Context - -/** - * QQ for Android - */ -@Suppress("INAPPLICABLE_JVM_NAME") -actual object QQAndroid : BotFactory { - @JvmName("newBot") - actual override fun Bot(context: Context, qq: Long, password: String, configuration: BotConfiguration): Bot { - return QQAndroidBot(context, BotAccount(qq, password), configuration) - } - - /** - * 使用指定的 [配置][configuration] 构造 [Bot] 实例 - */ - @JvmName("newBot") - actual override fun Bot( - context: Context, - qq: Long, - passwordMd5: ByteArray, - configuration: BotConfiguration - ): Bot = QQAndroidBot(context, BotAccount(qq, passwordMd5), configuration) -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.android.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.android.kt deleted file mode 100644 index 21ecd2923..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.android.kt +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.qqandroid - -import io.ktor.utils.io.ByteReadChannel -import io.ktor.utils.io.consumeEachBufferRange -import io.ktor.utils.io.core.Input -import io.ktor.utils.io.core.readBytes -import kotlinx.coroutines.io.* -import kotlinx.io.core.* -import kotlinx.io.pool.useInstance -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.toReadPacket -import java.nio.ByteBuffer - -@Suppress("DEPRECATION") -internal actual fun ByteReadChannel.toKotlinByteReadChannel(): kotlinx.coroutines.io.ByteReadChannel { - return object : kotlinx.coroutines.io.ByteReadChannel { - override val availableForRead: Int - get() = this@toKotlinByteReadChannel.availableForRead - override val isClosedForRead: Boolean - get() = this@toKotlinByteReadChannel.isClosedForRead - override val isClosedForWrite: Boolean - get() = this@toKotlinByteReadChannel.isClosedForWrite - - @Suppress("DEPRECATION_ERROR", "OverridingDeprecatedMember") - override var readByteOrder: ByteOrder - get() = when (this@toKotlinByteReadChannel.readByteOrder) { - io.ktor.utils.io.core.ByteOrder.BIG_ENDIAN -> ByteOrder.BIG_ENDIAN - io.ktor.utils.io.core.ByteOrder.LITTLE_ENDIAN -> ByteOrder.LITTLE_ENDIAN - } - set(value) { - this@toKotlinByteReadChannel.readByteOrder = when (value) { - ByteOrder.BIG_ENDIAN -> io.ktor.utils.io.core.ByteOrder.BIG_ENDIAN - ByteOrder.LITTLE_ENDIAN -> io.ktor.utils.io.core.ByteOrder.LITTLE_ENDIAN - } - } - - @Suppress("DEPRECATION_ERROR", "DEPRECATION", "OverridingDeprecatedMember") - override val totalBytesRead: Long - get() = this@toKotlinByteReadChannel.totalBytesRead - - override fun cancel(cause: Throwable?): Boolean = this@toKotlinByteReadChannel.cancel(cause) - override suspend fun consumeEachBufferRange(visitor: ConsumeEachBufferVisitor) = - this@toKotlinByteReadChannel.consumeEachBufferRange(visitor) - - override suspend fun discard(max: Long): Long = this@toKotlinByteReadChannel.discard(max) - - @Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_OVERRIDE") - @ExperimentalIoApi - override fun lookAhead(visitor: LookAheadSession.() -> R): R { - return this@toKotlinByteReadChannel.lookAhead l@{ - visitor(object : LookAheadSession { - override fun consumed(n: Int) { - return this@l.consumed(n) - } - - override fun request(skip: Int, atLeast: Int): ByteBuffer? { - return this@l.request(skip, atLeast) - } - }) - } - } - - @Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_OVERRIDE") - @ExperimentalIoApi - override suspend fun lookAheadSuspend(visitor: suspend LookAheadSuspendSession.() -> R): R = - this@toKotlinByteReadChannel.lookAheadSuspend l@{ - visitor(object : LookAheadSuspendSession { - override suspend fun awaitAtLeast(n: Int): Boolean { - return this@l.awaitAtLeast(n) - } - - override fun consumed(n: Int) { - return this@l.consumed(n) - } - - override fun request(skip: Int, atLeast: Int): ByteBuffer? { - return this@l.request(skip, atLeast) - } - - }) - } - - override suspend fun read(min: Int, consumer: (ByteBuffer) -> Unit) = - this@toKotlinByteReadChannel.read(min, consumer) - - override suspend fun readAvailable(dst: ByteBuffer): Int = this@toKotlinByteReadChannel.readAvailable(dst) - override suspend fun readAvailable(dst: ByteArray, offset: Int, length: Int): Int = - this@toKotlinByteReadChannel.readAvailable(dst, offset, length) - - override suspend fun readAvailable(dst: IoBuffer): Int { - ByteArrayPool.useInstance { - val read = this@toKotlinByteReadChannel.readAvailable(it, 0, it.size) - dst.writeFully(it, 0, read) - return read - } - } - - override suspend fun readBoolean(): Boolean = this@toKotlinByteReadChannel.readBoolean() - override suspend fun readByte(): Byte = this@toKotlinByteReadChannel.readByte() - override suspend fun readDouble(): Double = this@toKotlinByteReadChannel.readDouble() - override suspend fun readFloat(): Float = this@toKotlinByteReadChannel.readFloat() - override suspend fun readFully(dst: ByteBuffer): Int { - TODO("not implemented") - } - - override suspend fun readFully(dst: ByteArray, offset: Int, length: Int) = - this@toKotlinByteReadChannel.readFully(dst, offset, length) - - override suspend fun readFully(dst: IoBuffer, n: Int) { - ByteArrayPool.useInstance { - dst.writeFully(it, 0, this.readAvailable(it, 0, it.size)) - } - } - - override suspend fun readInt(): Int = this@toKotlinByteReadChannel.readInt() - override suspend fun readLong(): Long = this@toKotlinByteReadChannel.readLong() - override suspend fun readPacket(size: Int, headerSizeHint: Int): ByteReadPacket { - return this@toKotlinByteReadChannel.readPacket(size, headerSizeHint).readBytes().toReadPacket() - } - - override suspend fun readRemaining(limit: Long, headerSizeHint: Int): ByteReadPacket { - return this@toKotlinByteReadChannel.readRemaining(limit, headerSizeHint).readBytes().toReadPacket() - } - - @OptIn(ExperimentalIoApi::class) - @ExperimentalIoApi - override fun readSession(consumer: ReadSession.() -> Unit) { - @Suppress("DEPRECATION") - this@toKotlinByteReadChannel.readSession lambda@{ - consumer(object : ReadSession { - override val availableForRead: Int - get() = this@lambda.availableForRead - - override fun discard(n: Int): Int = this@lambda.discard(n) - - override fun request(atLeast: Int): IoBuffer? { - val ioBuffer: io.ktor.utils.io.core.IoBuffer = this@lambda.request(atLeast) ?: return null - val buffer = IoBuffer.Pool.borrow() - val bytes = (ioBuffer as Input).readBytes() - buffer.writeFully(bytes) - return buffer - } - }) - } - } - - override suspend fun readShort(): Short = this@toKotlinByteReadChannel.readShort() - - @Suppress("EXPERIMENTAL_OVERRIDE", "EXPERIMENTAL_API_USAGE") - @ExperimentalIoApi - override suspend fun readSuspendableSession(consumer: suspend SuspendableReadSession.() -> Unit) = - this@toKotlinByteReadChannel.readSuspendableSession l@{ - consumer(object : SuspendableReadSession { - override val availableForRead: Int - get() = this@l.availableForRead - - override suspend fun await(atLeast: Int): Boolean = this@l.await(atLeast) - override fun discard(n: Int): Int = this@l.discard(n) - override fun request(atLeast: Int): IoBuffer? { - @Suppress("DuplicatedCode") val ioBuffer: io.ktor.utils.io.core.IoBuffer = - this@l.request(atLeast) ?: return null - val buffer = IoBuffer.Pool.borrow() - val bytes = (ioBuffer as Input).readBytes() - buffer.writeFully(bytes) - return buffer - } - }) - } - - override suspend fun readUTF8Line(limit: Int): String? = this@toKotlinByteReadChannel.readUTF8Line(limit) - override suspend fun readUTF8LineTo(out: A, limit: Int): Boolean = - this@toKotlinByteReadChannel.readUTF8LineTo(out, limit) - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt deleted file mode 100644 index 222e0cfac..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt +++ /dev/null @@ -1,102 +0,0 @@ -@file:Suppress("unused", "unused", "NOTHING_TO_INLINE") - -package net.mamoe.mirai.qqandroid.utils - -import io.ktor.client.HttpClient -import io.ktor.client.engine.cio.CIO -import io.ktor.util.KtorExperimentalAPI -import kotlinx.io.pool.useInstance -import java.io.ByteArrayOutputStream -import java.io.InputStream -import java.net.Inet4Address -import java.security.MessageDigest -import java.util.zip.Deflater -import java.util.zip.GZIPInputStream -import java.util.zip.GZIPOutputStream -import java.util.zip.Inflater - -internal actual object MiraiPlatformUtils { - actual fun unzip(data: ByteArray, offset: Int, length: Int): ByteArray { - data.checkOffsetAndLength(offset, length) - if (length == 0) return ByteArray(0) - - val inflater = Inflater() - inflater.reset() - ByteArrayOutputStream().use { output -> - inflater.setInput(data, offset, length) - ByteArrayPool.useInstance { - while (!inflater.finished()) { - output.write(it, 0, inflater.inflate(it)) - } - } - - inflater.end() - return output.toByteArray() - } - } - - actual fun zip(data: ByteArray, offset: Int, length: Int): ByteArray { - data.checkOffsetAndLength(offset, length) - if (length == 0) return ByteArray(0) - - val deflater = Deflater() - deflater.setInput(data, offset, length) - deflater.finish() - - ByteArrayPool.useInstance { - return it.take(deflater.deflate(it)).toByteArray().also { deflater.end() } - } - } - - - actual fun md5(data: ByteArray, offset: Int, length: Int): ByteArray { - data.checkOffsetAndLength(offset, length) - return MessageDigest.getInstance("MD5").apply { update(data, offset, length) }.digest() - } - - actual inline fun md5(str: String): ByteArray = md5(str.toByteArray()) - - /** - * Ktor HttpClient. 不同平台使用不同引擎. - */ - @OptIn(KtorExperimentalAPI::class) - actual val Http: HttpClient = HttpClient(CIO) - - /** - * Localhost 解析 - */ - actual fun localIpAddress(): String = runCatching { - Inet4Address.getLocalHost().hostAddress - }.getOrElse { "192.168.1.123" } - - fun md5(stream: InputStream): ByteArray { - val digest = MessageDigest.getInstance("md5") - digest.reset() - stream.readInSequence { - digest.update(it.toByte()) - } - return digest.digest() - } - - - private inline fun InputStream.readInSequence(block: (Int) -> Unit) { - var read: Int - while (this.read().also { read = it } != -1) { - block(read) - } - } - - actual fun gzip(data: ByteArray, offset: Int, length: Int): ByteArray { - ByteArrayOutputStream().use { buf -> - GZIPOutputStream(buf).use { gzip -> - data.inputStream(offset, length).use { t -> t.copyTo(gzip) } - } - buf.flush() - return buf.toByteArray() - } - } - - actual fun ungzip(data: ByteArray, offset: Int, length: Int): ByteArray { - return GZIPInputStream(data.inputStream(offset, length)).use { it.readBytes() } - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.android.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.android.kt deleted file mode 100644 index b01b128fb..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.android.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.qqandroid.utils - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import kotlinx.io.core.ByteReadPacket -import kotlinx.io.core.Closeable -import kotlinx.io.nio.readPacketAtMost -import kotlinx.io.nio.writePacket -import java.net.InetSocketAddress -import java.nio.channels.DatagramChannel -import java.nio.channels.ReadableByteChannel -import java.nio.channels.WritableByteChannel - -/** - * 多平台适配的 DatagramChannel. - */ -internal actual class PlatformDatagramChannel actual constructor( - serverHost: String, - serverPort: Short -) : Closeable { - @PublishedApi - internal val channel: DatagramChannel = - DatagramChannel.open().connect(InetSocketAddress(serverHost, serverPort.toInt())) - actual val isOpen: Boolean get() = channel.isOpen - override fun close() = channel.close() - - actual suspend inline fun send(packet: ByteReadPacket): Boolean = withContext(Dispatchers.IO) { - try { - (channel as WritableByteChannel).writePacket(packet) - } catch (e: Throwable) { - throw SendPacketInternalException(e) - } - } - - actual suspend inline fun read(): ByteReadPacket = withContext(Dispatchers.IO) { - try { - (channel as ReadableByteChannel).readPacketAtMost(Long.MAX_VALUE) - } catch (e: Throwable) { - throw ReadPacketInternalException(e) - } - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt deleted file mode 100644 index 530a066c6..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.qqandroid.utils - -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import kotlinx.io.core.ByteReadPacket -import kotlinx.io.core.Closeable -import kotlinx.io.core.ExperimentalIoApi -import kotlinx.io.streams.readPacketAtMost -import kotlinx.io.streams.writePacket -import java.io.BufferedInputStream -import java.io.BufferedOutputStream -import java.io.IOException -import java.net.Socket - -/** - * 多平台适配的 TCP Socket. - */ -internal actual class PlatformSocket : Closeable { - private lateinit var socket: Socket - - actual val isOpen: Boolean - get() = - if (::socket.isInitialized) - socket.isConnected - else false - - actual override fun close() { - if (::socket.isInitialized) { - socket.close() - } - } - - @PublishedApi - internal lateinit var writeChannel: BufferedOutputStream - @PublishedApi - internal lateinit var readChannel: BufferedInputStream - - actual suspend fun send(packet: ByteArray, offset: Int, length: Int) { - withContext(Dispatchers.IO) { - writeChannel.write(packet, offset, length) - writeChannel.flush() - } - } - - /** - * @throws SendPacketInternalException - */ - actual suspend fun send(packet: ByteReadPacket) { - withContext(Dispatchers.IO) { - try { - writeChannel.writePacket(packet) - writeChannel.flush() - } catch (e: IOException) { - throw SendPacketInternalException(e) - } - } - } - - /** - * @throws ReadPacketInternalException - */ - actual suspend fun read(): ByteReadPacket { - return withContext(Dispatchers.IO) { - try { - readChannel.readPacketAtMost(Long.MAX_VALUE) - } catch (e: IOException) { - throw ReadPacketInternalException(e) - } - } - } - - @OptIn(ExperimentalIoApi::class) - actual suspend fun connect(serverHost: String, serverPort: Int) { - withContext(Dispatchers.IO) { - socket = Socket(serverHost, serverPort) - readChannel = socket.getInputStream().buffered() - writeChannel = socket.getOutputStream().buffered() - } - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt deleted file mode 100644 index 816beed09..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt +++ /dev/null @@ -1,27 +0,0 @@ -@file:Suppress("DuplicatedCode") - -package net.mamoe.mirai.qqandroid.utils - -import android.os.Build - - -private var isAddSuppressedSupported: Boolean = true - -@PublishedApi -internal actual fun Throwable.addSuppressedMirai(e: Throwable) { - if (this == e) { - return - } - if (!isAddSuppressedSupported) { - return - } - try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - this.addSuppressed(e) - } else { - isAddSuppressedSupported = false - } - } catch (e: Exception) { - isAddSuppressedSupported = false - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHAndroid.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHAndroid.kt deleted file mode 100644 index 42caea241..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHAndroid.kt +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.qqandroid.utils.cryptor - -import android.annotation.SuppressLint -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils.md5 -import net.mamoe.mirai.utils.MiraiLogger -import java.security.* -import java.security.spec.ECGenParameterSpec -import java.security.spec.X509EncodedKeySpec -import javax.crypto.KeyAgreement - - -actual typealias ECDHPrivateKey = PrivateKey -actual typealias ECDHPublicKey = PublicKey - -internal actual class ECDHKeyPairImpl( - private val delegate: KeyPair -) : ECDHKeyPair { - override val privateKey: ECDHPrivateKey get() = delegate.private - override val publicKey: ECDHPublicKey get() = delegate.public - - override val initialShareKey: ByteArray = ECDH.calculateShareKey(privateKey, initialPublicKey) -} - -@Suppress("FunctionName") -internal actual fun ECDH() = ECDH(ECDH.generateKeyPair()) - -internal actual class ECDH actual constructor(actual val keyPair: ECDHKeyPair) { - actual companion object { - @Suppress("ObjectPropertyName") - private var _isECDHAvailable: Boolean = false // because `runCatching` has no contract. - actual val isECDHAvailable: Boolean get() = _isECDHAvailable - - init { - fun testECDH() { - ECDHKeyPairImpl( - KeyPairGenerator.getInstance("ECDH") - .also { it.initialize(ECGenParameterSpec("secp192k1")) } - .genKeyPair()).let { - calculateShareKey(it.privateKey, it.publicKey) - } - } - - @SuppressLint("PrivateApi") - if (kotlin.runCatching { testECDH() }.isFailure) { - kotlin.runCatching { - val providerName = "BC" - - if (Security.getProvider(providerName) != null) { - Security.removeProvider(providerName) - } - @Suppress("SpellCheckingInspection") - Security.addProvider( - Class.forName( - "com.android.org.bouncycastle.jce.provider.BouncyCastleProvider", - true, - ClassLoader.getSystemClassLoader() - ).newInstance() as Provider - ) - testECDH() - _isECDHAvailable = true - }.exceptionOrNull()?.let { - _isECDHAvailable = false - @Suppress("DEPRECATION") - MiraiLogger.error(it) - } - } - } - - actual fun generateKeyPair(): ECDHKeyPair { - if (!isECDHAvailable) { - return ECDHKeyPair.DefaultStub - } - return ECDHKeyPairImpl(KeyPairGenerator.getInstance("ECDH") - .also { it.initialize(ECGenParameterSpec("secp192k1")) } - .genKeyPair()) - } - - actual fun calculateShareKey( - privateKey: ECDHPrivateKey, - publicKey: ECDHPublicKey - ): ByteArray { - val instance = KeyAgreement.getInstance("ECDH", "BC") - instance.init(privateKey) - instance.doPhase(publicKey, true) - return md5(instance.generateSecret()) - } - - actual fun constructPublicKey(key: ByteArray): ECDHPublicKey { - return KeyFactory.getInstance("EC", "BC").generatePublic(X509EncodedKeySpec(key)) - } - } - - actual fun calculateShareKeyByPeerPublicKey(peerPublicKey: ECDHPublicKey): ByteArray { - return calculateShareKey(keyPair.privateKey, peerPublicKey) - } - - actual override fun toString(): String { - return "ECDH(keyPair=$keyPair)" - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt b/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt deleted file mode 100644 index 9952fb58a..000000000 --- a/mirai-core-qqandroid/src/androidMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt +++ /dev/null @@ -1,8 +0,0 @@ -package net.mamoe.mirai.qqandroid.utils - -import kotlin.reflect.KProperty1 -import kotlin.reflect.jvm.javaField - -internal actual fun KProperty1<*, *>.getValueAgainstPermission(receiver: Any): Any? { - return this.javaField?.apply { isAccessible = true }?.get(receiver) -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/SyncingCacheList.kt b/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/SyncingCacheList.kt deleted file mode 100644 index 70da8a59f..000000000 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/SyncingCacheList.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE - * - */ - -package net.mamoe.mirai.qqandroid.network.protocol - -import net.mamoe.mirai.qqandroid.utils.LinkedList -import kotlin.jvm.Synchronized - -internal class SyncingCacheList(private val size: Int = 50) { - private val packetIdList = LinkedList() - - @Synchronized // faster than suspending Mutex - fun addCache(element: E): Boolean { - if (packetIdList.contains(element)) return false // duplicate - packetIdList.addLast(element) - if (packetIdList.size >= size) packetIdList.removeFirst() - return true - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.kt b/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.kt deleted file mode 100644 index 291206682..000000000 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.kt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE - * - */ - -package net.mamoe.mirai.qqandroid.utils - -import java.util.LinkedList - -@Suppress("ACTUAL_WITHOUT_EXPECT") -internal actual typealias LinkedList = LinkedList \ No newline at end of file diff --git a/mirai-core/README.md b/mirai-core/README.md index 8488be3e8..f75364fbb 100644 --- a/mirai-core/README.md +++ b/mirai-core/README.md @@ -1,10 +1,5 @@ -# mirai-core +# mirai-core-qqandroid -mirai 的核心公开 API. - -mirai 为多协议设计, `mirai-core` 只提供基础框架和抽象数据类. -具体的各协议实现为 `mirai-core-PROTOCOL`, 这些协议模块都继承自 `mirai-core`. - -可用的协议模块: -- [`mirai-core-qqandroid`](../mirai-core-qqandroid): Android QQ 8.3.0 版本协议实现. +QQ for Android 8.2.7 协议实现. +相较于 `mirai-core`, 此模块仅提供协议和功能的实现, 不提供额外的公开的 API. \ No newline at end of file diff --git a/mirai-core/build.gradle.kts b/mirai-core/build.gradle.kts index a27495b7a..342b7b2ce 100644 --- a/mirai-core/build.gradle.kts +++ b/mirai-core/build.gradle.kts @@ -4,19 +4,17 @@ plugins { kotlin("multiplatform") id("kotlinx-atomicfu") kotlin("plugin.serialization") - id("signing") id("net.mamoe.kotlin-jvm-blocking-bridge") `maven-publish` id("com.jfrog.bintray") + java } -description = "Mirai API module" +description = "Mirai Protocol implementation for QQ Android" val isAndroidSDKAvailable: Boolean by project kotlin { - explicitApi() - if (isAndroidSDKAvailable) { apply(from = rootProject.file("gradle/android.gradle")) android("android") { @@ -37,8 +35,8 @@ kotlin { ) } - jvm { - // withJava() // https://youtrack.jetbrains.com/issue/KT-39991 + jvm("jvm") { + withJava() } sourceSets.apply { @@ -56,50 +54,41 @@ kotlin { languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.UnstableExternalImage") languageSettings.progressiveMode = true + + dependencies { + api(project(":mirai-core-api")) + } } val commonMain by getting { dependencies { - api(kotlin("serialization")) - api(kotlin("reflect")) - api1(kotlinx("serialization-core", Versions.Kotlin.serialization)) - implementation1(kotlinx("serialization-protobuf", Versions.Kotlin.serialization)) - api1(kotlinx("io", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) api(kotlinx("coroutines-core", Versions.Kotlin.coroutines)) - - implementation1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") - - api1(ktor("client-cio")) - api1(ktor("client-core")) - api1(ktor("network")) + implementation1(kotlinx("serialization-protobuf", Versions.Kotlin.serialization)) + api1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") + api1(kotlinx("io", Versions.Kotlin.io)) + implementation1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) } } - commonTest { + val commonTest by getting { dependencies { implementation(kotlin("test-annotations-common")) implementation(kotlin("test-common")) + implementation(kotlin("script-runtime")) } } if (isAndroidSDKAvailable) { val androidMain by getting { dependencies { - api(kotlin("reflect")) - - api1(kotlinx("io-jvm", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) - - api1(ktor("client-android", Versions.Kotlin.ktor)) } } val androidTest by getting { dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-junit")) + implementation(kotlin("test", Versions.Kotlin.compiler)) + implementation(kotlin("test-junit", Versions.Kotlin.compiler)) implementation(kotlin("test-annotations-common")) implementation(kotlin("test-common")) } @@ -108,23 +97,18 @@ kotlin { val jvmMain by getting { dependencies { - api(kotlin("reflect")) - compileOnly("org.apache.logging.log4j:log4j-api:" + Versions.Logging.log4j) - compileOnly("org.slf4j:slf4j-api:" + Versions.Logging.slf4j) - - api1(ktor("client-core-jvm", Versions.Kotlin.ktor)) + implementation("org.bouncycastle:bcprov-jdk15on:1.64") api1(kotlinx("io-jvm", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) + // api(kotlinx("coroutines-debug", Versions.Kotlin.coroutines)) } } val jvmTest by getting { dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-junit")) + dependsOn(commonTest) + implementation(kotlin("test", Versions.Kotlin.compiler)) + implementation(kotlin("test-junit", Versions.Kotlin.compiler)) implementation("org.pcap4j:pcap4j-distribution:1.8.2") - - runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE } } } @@ -150,6 +134,7 @@ fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNo apply(from = rootProject.file("gradle/publish.gradle")) + tasks.withType { doFirst { publishing.publications diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt deleted file mode 100644 index f363a4fba..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/BotJavaFriendlyAPI.kt +++ /dev/null @@ -1,220 +0,0 @@ -package net.mamoe.mirai - -import kotlinx.coroutines.* -import net.mamoe.mirai.contact.PermissionDeniedException -import net.mamoe.mirai.contact.recall -import net.mamoe.mirai.data.AddFriendResult -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.message.data.MessageChain -import net.mamoe.mirai.message.data.MessageSource -import net.mamoe.mirai.network.LoginFailedException -import net.mamoe.mirai.utils.MiraiExperimentalAPI -import java.util.concurrent.Future -import java.util.concurrent.TimeUnit -import java.util.concurrent.TimeoutException - -/** - * [Bot] 中为了让 Java 使用者调用更方便的 API 列表. - */ -@Suppress("FunctionName", "INAPPLICABLE_JVM_NAME", "unused") -internal actual interface BotJavaFriendlyAPI actual constructor() { - init { - @Suppress("LeakingThis") - assert(this is Bot) - } - - private inline fun runBlocking(crossinline block: suspend Bot.() -> R): R { - return kotlinx.coroutines.runBlocking { block(this@BotJavaFriendlyAPI as Bot) } - } - - private inline fun future(crossinline block: suspend Bot.() -> R): Future { - return (this as Bot).run { future { block() } } - } - - /** - * 登录, 或重新登录. - * 这个函数总是关闭一切现有网路任务, 然后重新登录并重新缓存好友列表和群列表. - * - * 一般情况下不需要重新登录. Mirai 能够自动处理掉线情况. - * - * 最终调用 [net.mamoe.mirai.network.BotNetworkHandler.relogin] - * - * @throws LoginFailedException - */ - @JvmName("login") - fun __loginBlockingForJava__() { - runBlocking { login() } - } - - /** - * 撤回这条消息. 可撤回自己 2 分钟内发出的消息, 和任意时间的群成员的消息. - * - * [Bot] 撤回自己的消息不需要权限. - * [Bot] 撤回群员的消息需要管理员权限. - * - * @param source 消息源. 可从 [MessageReceipt.source] 获得, 或从消息事件中的 [MessageChain] 获得. - * - * @throws PermissionDeniedException 当 [Bot] 无权限操作时 - * - * @see Bot.recall (扩展函数) 接受参数 [MessageChain] - */ - @JvmName("recall") - fun __recallBlockingForJava__(source: MessageSource) { - runBlocking { recall(source) } - } - - /** - * 撤回这条消息. - * 根据 [message] 内的 [MessageSource] 进行相关判断. - * - * [Bot] 撤回自己的消息不需要权限. - * [Bot] 撤回群员的消息需要管理员权限. - * - * @throws PermissionDeniedException 当 [Bot] 无权限操作时 - * @see Bot.recall - */ - @JvmName("recall") - fun __recallBlockingForJava__(message: MessageChain) { - runBlocking { recall(message) } - } - - /** - * 在一段时间后撤回这条消息. - * 将根据 [MessageSource.groupId] 判断消息是群消息还是好友消息. - * - * @param millis 延迟的时间, 单位为毫秒 - * @see recall - */ - @JvmName("recallIn") - fun __recallIn_MemberForJava__(source: MessageSource, millis: Long) { - runBlocking { recallIn(source, millis) } - } - - /** - * 在一段时间后撤回这条消息. - * - * @param millis 延迟的时间, 单位为毫秒 - * @see recall - */ - @JvmName("recallIn") - fun __recallIn_MemberForJava__(source: MessageChain, millis: Long) { - runBlocking { recallIn(source, millis) } - } - - /** - * 获取图片下载链接 - */ - @JvmName("queryImageUrl") - fun __queryImageUrlBlockingForJava__(image: Image): String { - return runBlocking { queryImageUrl(image) } - } - - /** - * 阻塞当前线程直到 [Bot] 下线. - */ - @JvmName("join") - fun __joinBlockingForJava__() { - runBlocking { join() } - } - - /** - * 添加一个好友 - * - * @param message 若需要验证请求时的验证消息. - * @param remark 好友备注 - */ - @JvmName("addFriend") - fun __addFriendBlockingForJava__( - id: Long, - message: String? = null, - remark: String? = null - ): AddFriendResult { - - return runBlocking { addFriend(id, message, remark) } - } - - /** - * 异步调用 [__loginBlockingForJava__] - */ - @JvmName("loginAsync") - fun __loginAsyncForJava__(): Future { - return future { login() } - } - - /** - * 异步调用 [__recallBlockingForJava__] - */ - @JvmName("recallAsync") - fun __recallAsyncForJava__(source: MessageSource): Future { - return future { recall(source) } - } - - /** - * 异步调用 [__recallBlockingForJava__] - */ - @JvmName("recallAsync") - fun __recallAsyncForJava__(source: MessageChain): Future { - return future { recall(source) } - } - - /** - * 异步调用 [__queryImageUrlBlockingForJava__] - */ - @JvmName("queryImageUrlAsync") - fun __queryImageUrlAsyncForJava__(image: Image): Future { - return future { queryImageUrl(image) } - } -} - -// !! 不要 crossinline, 会编译失败 -@OptIn(ExperimentalCoroutinesApi::class) -internal fun C.future(block: suspend C.() -> R): Future { - val future = object : Future { - val value: CompletableDeferred = CompletableDeferred() - - override fun isDone(): Boolean { - return value.isCompleted - } - - override fun get(): R { - if (value.isCompleted) { - return value.getCompleted() - } - return runBlocking { value.await() } - } - - override fun get(timeout: Long, unit: TimeUnit): R { - if (value.isCompleted) { - return value.getCompleted() - } - return runBlocking { - withTimeoutOrNull(TimeUnit.MILLISECONDS.convert(timeout, unit)) { value.await() } - ?: throw TimeoutException() - } - } - - override fun cancel(mayInterruptIfRunning: Boolean): Boolean { - if (value.isCompleted || value.isCancelled) { - return false - } - - return if (mayInterruptIfRunning && value.isActive) { - value.cancel() - true - } else { - false - } - } - - override fun isCancelled(): Boolean { - return value.isCancelled - } - } - - launch { - @OptIn(ExperimentalCoroutinesApi::class) - future.value.completeWith(kotlin.runCatching { block() }) - } - - return future -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt deleted file mode 100644 index f21179c07..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/ContactJavaFriendlyAPI.kt +++ /dev/null @@ -1,344 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.contact - -import android.graphics.Bitmap -import kotlinx.coroutines.Dispatchers -import kotlinx.io.core.Input -import net.mamoe.mirai.Bot -import net.mamoe.mirai.JavaFriendlyAPI -import net.mamoe.mirai.event.events.* -import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent -import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent -import net.mamoe.mirai.future -import net.mamoe.mirai.message.MessageReceipt -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.message.data.Message -import net.mamoe.mirai.message.uploadImage -import net.mamoe.mirai.utils.ExternalImage -import net.mamoe.mirai.utils.OverFileSizeMaxException -import java.io.File -import java.io.InputStream -import java.net.URL -import java.util.concurrent.Future - -@JavaFriendlyAPI -@Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused") -internal actual abstract class ContactJavaFriendlyAPI { - - private inline fun runBlocking(crossinline block: suspend Contact.() -> R): R { - @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@ContactJavaFriendlyAPI as Contact) } - } - - private inline fun future(crossinline block: suspend Contact.() -> R): Future { - @Suppress("CAST_NEVER_SUCCEEDS") - return (this as Contact).run { future { block() } } - } - - /** - * 向这个对象发送消息. - * - * 单条消息最大可发送 4500 字符或 50 张图片. - * - * @see FriendMessageSendEvent 发送好友信息事件, cancellable - * @see GroupMessageSendEvent 发送群消息事件. cancellable - * - * @throws EventCancelledException 当发送消息事件被取消时抛出 - * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 - * @throws MessageTooLargeException 当消息过长时抛出 * @throws MessageTooLargeException 当消息过长时抛出 - - * - * @return 消息回执. 可 [引用回复][MessageReceipt.quote](仅群聊)或 [撤回][MessageReceipt.recall] 这条消息. - */ - @Throws(EventCancelledException::class, IllegalStateException::class) - @JvmName("sendMessage") - open fun __sendMessageBlockingForJava__(message: Message): MessageReceipt<@JvmWildcard Contact> { - return runBlocking { - sendMessage(message) - } - } - - @JvmName("sendMessage") - open fun __sendMessageBlockingForJava__(message: String): MessageReceipt<@JvmWildcard Contact> { - return runBlocking { sendMessage(message) } - } - - /** - * 上传一个图片以备发送. - * - * @see BeforeImageUploadEvent 图片发送前事件, cancellable - * @see ImageUploadEvent 图片发送完成事件 - * - * @throws EventCancelledException 当发送消息事件被取消 - * @throws OverFileSizeMaxException 当图片文件过大而被服务器拒绝上传时. (最大大小约为 20 MB) - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: ExternalImage): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: URL): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: InputStream): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: Input): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中将文件作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: File): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中将图片上传, 但不发送. 不会保存临时文件 - * @throws OverFileSizeMaxException - */ - @Throws(OverFileSizeMaxException::class) - @JvmName("uploadImage") - open fun __uploadImageBlockingForJava__(image: Bitmap): Image { - return runBlocking { uploadImage(image) } - } - - /** - * 发送消息 - * @see Contact.sendMessage - */ - @JvmName("sendMessageAsync") - open fun __sendMessageAsyncForJava__(message: Message): Future> { - return future { sendMessage(message) } - } - - /** - * 发送消息 - * @see Contact.sendMessage - */ - @JvmName("sendMessageAsync") - open fun __sendMessageAsyncForJava__(message: String): Future> { - return future { sendMessage(message) } - } - - /** - * 上传一个图片以备发送. - * - * @see BeforeImageUploadEvent 图片发送前事件, cancellable - * @see ImageUploadEvent 图片发送完成事件 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: ExternalImage): Future { - return future { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片上传, 但不发送 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: URL): Future { - return future { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片上传, 但不发送 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: InputStream): Future { - return future { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片上传, 但不发送 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: Input): Future { - return future { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中将文件作为图片上传, 但不发送 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: File): Future { - return future { uploadImage(image) } - } - - /** - * 在 [Dispatchers.IO] 中将图片上传, 但不发送. 不会保存临时文件 - */ - @JvmName("uploadImageAsync") - open fun __uploadImageAsyncForJava__(image: Bitmap): Future { - return future { uploadImage(image) } - } -} - -@Suppress("INAPPLICABLE_JVM_NAME", "FunctionName", "unused", "unused") -@MiraiInternalAPI -@JavaFriendlyAPI -actual abstract class MemberJavaFriendlyAPI : QQ() { - private inline fun runBlocking(crossinline block: suspend Member.() -> R): R { - @Suppress("CAST_NEVER_SUCCEEDS") - return kotlinx.coroutines.runBlocking { block(this@MemberJavaFriendlyAPI as Member) } - } - - private inline fun future(crossinline block: suspend Member.() -> R): Future { - @Suppress("CAST_NEVER_SUCCEEDS") - return (this as Member).run { future { block() } } - } - - - /** - * 禁言. - * - * QQ 中最小操作和显示的时间都是一分钟. - * 机器人可以实现精确到秒, 会被客户端显示为 1 分钟但不影响实际禁言时间. - * - * 管理员可禁言成员, 群主可禁言管理员和群员. - * - * @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常. - * @return 机器人无权限时返回 `false` - * - * @see Int.minutesToSeconds - * @see Int.hoursToSeconds - * @see Int.daysToSeconds - * - * @see MemberMuteEvent 成员被禁言事件 - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("mute") - open fun __muteBlockingForJava__(seconds: Int) { - return runBlocking { mute(seconds) } - } - - /** - * 解除禁言. - * - * 管理员可解除成员的禁言, 群主可解除管理员和群员的禁言. - * - * @see MemberUnmuteEvent 成员被取消禁言事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("unmute") - open fun __unmuteBlockingForJava__() { - return runBlocking { unmute() } - } - - /** - * 踢出该成员. - * - * 管理员可踢出成员, 群主可踢出管理员和群员. - * - * @see MemberLeaveEvent.Kick 成员被踢出事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("kick") - open fun __kickBlockingForJava__(message: String) { - return runBlocking { kick() } - } - - /** - * 踢出该成员. - * - * 管理员可踢出成员, 群主可踢出管理员和群员. - * - * @see MemberLeaveEvent.Kick 成员被踢出事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("kick") - open fun __kickBlockingForJava__() = __kickBlockingForJava__("") - - - /** - * 禁言. - * - * QQ 中最小操作和显示的时间都是一分钟. - * 机器人可以实现精确到秒, 会被客户端显示为 1 分钟但不影响实际禁言时间. - * - * 管理员可禁言成员, 群主可禁言管理员和群员. - * - * @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常. - * @return 机器人无权限时返回 `false` - * - * @see Int.minutesToSeconds - * @see Int.hoursToSeconds - * @see Int.daysToSeconds - * - * @see MemberMuteEvent 成员被禁言事件 - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("muteAsync") - open fun __muteAsyncForJava__(seconds: Int): Future { - return future { mute(seconds) } - } - - /** - * 解除禁言. - * - * 管理员可解除成员的禁言, 群主可解除管理员和群员的禁言. - * - * @see MemberUnmuteEvent 成员被取消禁言事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("unmuteAsync") - open fun __unmuteAsyncForJava__(): Future { - return future { unmute() } - } - - /** - * 踢出该成员. - * - * 管理员可踢出成员, 群主可踢出管理员和群员. - * - * @see MemberLeaveEvent.Kick 成员被踢出事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("kickAsync") - open fun __kickAsyncForJava__(message: String): Future { - return future { kick() } - } - - /** - * 踢出该成员. - * - * 管理员可踢出成员, 群主可踢出管理员和群员. - * - * @see MemberLeaveEvent.Kick 成员被踢出事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmName("kickAsync") - open fun __kickAsyncForJava__(): Future = __kickAsyncForJava__("") -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Group.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Group.kt deleted file mode 100644 index f25579a33..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Group.kt +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.contact - -import kotlinx.coroutines.CoroutineScope -import net.mamoe.mirai.Bot -import net.mamoe.mirai.LowLevelAPI -import net.mamoe.mirai.data.MemberInfo -import net.mamoe.mirai.event.events.* -import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent -import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent -import net.mamoe.mirai.message.MessageReceipt -import net.mamoe.mirai.message.data.Message -import net.mamoe.mirai.message.data.OfflineGroupImage -import net.mamoe.mirai.utils.ExternalImage -import net.mamoe.mirai.utils.MiraiExperimentalAPI -import net.mamoe.mirai.utils.OverFileSizeMaxException -import net.mamoe.mirai.utils.SinceMirai - -/** - * 群. 在 QQ Android 中叫做 "Troop" - */ -actual abstract class Group : Contact(), CoroutineScope { - /** - * 群名称. - * - * 在修改时将会异步上传至服务器. - * 频繁修改可能会被服务器拒绝. - * - * @see MemberPermissionChangeEvent - * @throws PermissionDeniedException 无权限修改时将会抛出异常 - */ - actual abstract var name: String - - /** - * 群设置 - */ - actual abstract val settings: GroupSettings - - /** - * 同为 groupCode, 用户看到的群号码. - */ - actual abstract override val id: Long - - /** - * 群主. - * - * @return 若机器人是群主, 返回 [botAsMember]. 否则返回相应的成员 - */ - actual abstract val owner: Member - - /** - * [Bot] 在群内的 [newMember] 实例 - */ - @MiraiExperimentalAPI - actual abstract val botAsMember: Member - - /** - * 机器人被禁言还剩余多少秒 - * - * @see BotMuteEvent 机器人被禁言事件 - * @see isBotMuted 判断机器人是否正在被禁言 - */ - actual abstract val botMuteRemaining: Int - - /** - * 机器人在这个群里的权限 - * - * @see Group.checkBotPermission 检查 [Bot] 在这个群里的权限 - * @see Group.checkBotPermissionOperator 要求 [Bot] 在这个群里的权限为 [管理员或群主][MemberPermission.isOperator] - * - * @see BotGroupPermissionChangeEvent 机器人群员修改 - */ - actual abstract val botPermission: MemberPermission - - /** - * 群头像下载链接. - */ - actual val avatarUrl: String - get() = "https://p.qlogo.cn/gh/$id/${id}_1/640" - - /** - * 群成员列表, 不含机器人自己, 含群主. - * 在 [Group] 实例创建的时候查询一次. 并与事件同步事件更新 - */ - actual abstract val members: ContactList - - /** - * 获取群成员实例. 不存在时抛出 [kotlin.NoSuchElementException] - */ - actual abstract operator fun get(id: Long): Member - - /** - * 获取群成员实例, 不存在则 null - */ - actual abstract fun getOrNull(id: Long): Member? - - /** - * 检查此 id 的群成员是否存在 - */ - actual abstract operator fun contains(id: Long): Boolean - - /** - * 让机器人退出这个群. 机器人必须为非群主才能退出. 否则将会失败 - */ - @MiraiExperimentalAPI("还未支持") - actual abstract suspend fun quit(): Boolean - - /** - * 构造一个 [Member]. - * 非特殊情况请不要使用这个函数. 优先使用 [get]. - */ - @LowLevelAPI - @MiraiExperimentalAPI("dangerous") - actual abstract fun newMember(memberInfo: MemberInfo): Member - - /** - * 向这个对象发送消息. - * - * 单条消息最大可发送 4500 字符或 50 张图片. - * - * @see FriendMessageSendEvent 发送好友信息事件, cancellable - * @see GroupMessageSendEvent 发送群消息事件. cancellable - * - * @throws EventCancelledException 当发送消息事件被取消时抛出 - * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 - * @throws MessageTooLargeException 当消息过长时抛出 - * - * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) - */ - @JvmSynthetic - actual abstract override suspend fun sendMessage(message: Message): MessageReceipt - - /** - * 上传一个图片以备发送. - * - * @see BeforeImageUploadEvent 图片发送前事件, cancellable - * @see ImageUploadEvent 图片发送完成事件 - * - * @throws EventCancelledException 当发送消息事件被取消 - * @throws OverFileSizeMaxException 当图片文件过大而被服务器拒绝上传时. (最大大小约为 20 MB) - */ - @JvmSynthetic - actual abstract override suspend fun uploadImage(image: ExternalImage): OfflineGroupImage - - actual companion object { - actual fun calculateGroupUinByGroupCode(groupCode: Long): Long = - CommonGroupCalculations.calculateGroupUinByGroupCode(groupCode) - - actual fun calculateGroupCodeByGroupUin(groupUin: Long): Long = - CommonGroupCalculations.calculateGroupCodeByGroupUin(groupUin) - } - - @MiraiExperimentalAPI - actual fun toFullString(): String { - return "Group(id=${this.id}, name=$name, owner=${owner.id}, members=${members.idContentString})" - } -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt deleted file mode 100644 index 564da8f3a..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/Member.kt +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 with Mamoe Exceptions license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ -@file:Suppress("unused") - -package net.mamoe.mirai.contact - -import net.mamoe.mirai.Bot -import net.mamoe.mirai.JavaFriendlyAPI -import net.mamoe.mirai.event.events.* -import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent -import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent -import net.mamoe.mirai.message.MessageReceipt -import net.mamoe.mirai.message.data.Message -import net.mamoe.mirai.utils.MiraiInternalAPI -import net.mamoe.mirai.utils.WeakRefProperty - -/** - * 群成员. - */ -@Suppress("INAPPLICABLE_JVM_NAME") -actual abstract class Member : MemberJavaFriendlyAPI() { - /** - * 所在的群. - */ - @WeakRefProperty - actual abstract val group: Group - - /** - * 成员的权限, 动态更新. - * - * @see MemberPermissionChangeEvent 权限变更事件. 由群主或机器人的操作触发. - */ - actual abstract val permission: MemberPermission - - /** - * 群名片. 可能为空. - * - * 管理员和群主都可修改任何人(包括群主)的群名片. - * - * 在修改时将会异步上传至服务器. - * - * @see [nameCardOrNick] 获取非空群名片或昵称 - * - * @see MemberCardChangeEvent 群名片被管理员, 自己或 [Bot] 改动事件. 修改时也会触发此事件. - * @throws PermissionDeniedException 无权限修改时 - */ - actual abstract var nameCard: String - - /** - * 群头衔. - * - * 仅群主可以修改群头衔. - * - * 在修改时将会异步上传至服务器. - * - * @see MemberSpecialTitleChangeEvent 群名片被管理员, 自己或 [Bot] 改动事件. 修改时也会触发此事件. - * @throws PermissionDeniedException 无权限修改时 - */ - actual abstract var specialTitle: String - - /** - * 被禁言剩余时长. 单位为秒. - * - * @see isMuted 判断改成员是否处于禁言状态 - * @see mute 设置禁言 - * @see unmute 取消禁言 - */ - actual abstract val muteTimeRemaining: Int - - /** - * 禁言. - * - * QQ 中最小操作和显示的时间都是一分钟. - * 机器人可以实现精确到秒, 会被客户端显示为 1 分钟但不影响实际禁言时间. - * - * 管理员可禁言成员, 群主可禁言管理员和群员. - * - * @param durationSeconds 持续时间. 精确到秒. 范围区间表示为 `(0s, 30days]`. 超过范围则会抛出异常. - * @return 机器人无权限时返回 `false` - * - * @see Int.minutesToSeconds - * @see Int.hoursToSeconds - * @see Int.daysToSeconds - * - * @see MemberMuteEvent 成员被禁言事件 - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmSynthetic - actual abstract suspend fun mute(durationSeconds: Int) - - /** - * 解除禁言. - * - * 管理员可解除成员的禁言, 群主可解除管理员和群员的禁言. - * - * @see MemberUnmuteEvent 成员被取消禁言事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmSynthetic - actual abstract suspend fun unmute() - - /** - * 向这个对象发送消息. - * - * 单条消息最大可发送 4500 字符或 50 张图片. - * - * @see FriendMessageSendEvent 发送好友信息事件, cancellable - * @see GroupMessageSendEvent 发送群消息事件. cancellable - * - * @throws EventCancelledException 当发送消息事件被取消时抛出 - * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 - * @throws MessageTooLargeException 当消息过长时抛出 - * - * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) - */ - @JvmSynthetic - actual abstract override suspend fun sendMessage(message: Message): MessageReceipt - - /** - * 踢出该成员. - * - * 管理员可踢出成员, 群主可踢出管理员和群员. - * - * @see MemberLeaveEvent.Kick 成员被踢出事件. - * @throws PermissionDeniedException 无权限修改时 - */ - @JvmSynthetic - actual abstract suspend fun kick(message: String) - - /** - * 当且仅当 `[other] is [Member] && [other].id == this.id && [other].group == this.group` 时为 true - */ - actual abstract override fun equals(other: Any?): Boolean - - /** - * @return `bot.hashCode() * 31 + id.hashCode()` - */ - actual abstract override fun hashCode(): Int - -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/PermissionDeniedException.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/PermissionDeniedException.kt deleted file mode 100644 index 8f5320566..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/PermissionDeniedException.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mamoe.mirai.contact - -/** - * 权限不足 - */ -actual class PermissionDeniedException : IllegalStateException { - actual constructor() : super("Permission denied") - actual constructor(message: String?) : super(message) -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/QQ.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/QQ.kt deleted file mode 100644 index 63db3304f..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/contact/QQ.kt +++ /dev/null @@ -1,104 +0,0 @@ -@file:Suppress("unused") - -package net.mamoe.mirai.contact - -import kotlinx.coroutines.CoroutineScope -import net.mamoe.mirai.Bot -import net.mamoe.mirai.data.FriendNameRemark -import net.mamoe.mirai.data.PreviousNameList -import net.mamoe.mirai.data.Profile -import net.mamoe.mirai.event.events.BeforeImageUploadEvent -import net.mamoe.mirai.event.events.EventCancelledException -import net.mamoe.mirai.event.events.ImageUploadEvent -import net.mamoe.mirai.event.events.MessageSendEvent.FriendMessageSendEvent -import net.mamoe.mirai.event.events.MessageSendEvent.GroupMessageSendEvent -import net.mamoe.mirai.message.MessageReceipt -import net.mamoe.mirai.message.data.Message -import net.mamoe.mirai.message.data.OfflineFriendImage -import net.mamoe.mirai.utils.ExternalImage -import net.mamoe.mirai.utils.MiraiExperimentalAPI -import net.mamoe.mirai.utils.OverFileSizeMaxException - -/** - * QQ 对象. - * 注意: 一个 [QQ] 实例并不是独立的, 它属于一个 [Bot]. - * 它不能被直接构造. 任何时候都应从 [Bot.getFriend] 或事件中获取. - * - * 对于同一个 [Bot] 任何一个人的 [QQ] 实例都是单一的. - * - * A QQ instance helps you to receive event from or sendPacket event to. - * Notice that, one QQ instance belong to one [Bot], that is, QQ instances from different [Bot] are NOT the same. - */ -@Suppress("INAPPLICABLE_JVM_NAME") -actual abstract class QQ : Contact(), CoroutineScope { - /** - * 请求头像下载链接 - */ - // @MiraiExperimentalAPI - //suspend fun queryAvatar(): AvatarLink - /** - * QQ 号码 - */ - actual abstract override val id: Long - /** - * 昵称 - */ - actual abstract val nick: String - - /** - * 查询用户资料 - */ - @MiraiExperimentalAPI("还未支持") - actual abstract suspend fun queryProfile(): Profile - - /** - * 头像下载链接 - */ - actual val avatarUrl: String - get() = "http://q1.qlogo.cn/g?b=qq&nk=$id&s=640" - - /** - * 查询曾用名. - * - * 曾用名可能是: - * - 昵称 - * - 共同群内的群名片 - */ - @MiraiExperimentalAPI("还未支持") - actual abstract suspend fun queryPreviousNameList(): PreviousNameList - - /** - * 查询机器人账号给这个人设置的备注 - */ - @MiraiExperimentalAPI("还未支持") - actual abstract suspend fun queryRemark(): FriendNameRemark - - /** - * 向这个对象发送消息. - * - * 单条消息最大可发送 4500 字符或 50 张图片. - * - * @see FriendMessageSendEvent 发送好友信息事件, cancellable - * @see GroupMessageSendEvent 发送群消息事件. cancellable - * - * @throws EventCancelledException 当发送消息事件被取消时抛出 - * @throws BotIsBeingMutedException 发送群消息时若 [Bot] 被禁言抛出 - * @throws MessageTooLargeException 当消息过长时抛出 - * - * @return 消息回执. 可进行撤回 ([MessageReceipt.recall]) - */ - @JvmSynthetic - actual abstract override suspend fun sendMessage(message: Message): MessageReceipt - - /** - * 上传一个图片以备发送. - * - * @see BeforeImageUploadEvent 图片发送前事件, cancellable - * @see ImageUploadEvent 图片发送完成事件 - * - * @throws EventCancelledException 当发送消息事件被取消 - * @throws OverFileSizeMaxException 当图片文件过大而被服务器拒绝上传时. (最大大小约为 20 MB) - */ - @JvmSynthetic - actual abstract override suspend fun uploadImage(image: ExternalImage): OfflineFriendImage -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/events/EventCancelledException.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/events/EventCancelledException.kt deleted file mode 100644 index 0e62c4240..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/events/EventCancelledException.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mamoe.mirai.event.events - -@Suppress("unused") -actual class EventCancelledException : RuntimeException { - actual constructor() : super() - actual constructor(message: String?) : super(message) - actual constructor(message: String?, cause: Throwable?) : super(message, cause) - actual constructor(cause: Throwable?) : super(cause) -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt deleted file mode 100644 index 2edd1ae6b..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/event/internal/MiraiAtomicBoolean.kt +++ /dev/null @@ -1,42 +0,0 @@ -package net.mamoe.mirai.event.internal - -import net.mamoe.mirai.event.Event -import net.mamoe.mirai.event.Listener -import net.mamoe.mirai.utils.LockFreeLinkedList -import java.util.concurrent.atomic.AtomicBoolean -import kotlin.reflect.KClass - -internal actual class MiraiAtomicBoolean actual constructor(initial: Boolean) { - private val delegate: AtomicBoolean = AtomicBoolean(initial) - - actual fun compareAndSet(expect: Boolean, update: Boolean): Boolean { - return delegate.compareAndSet(expect, update) - } - - actual var value: Boolean - get() = delegate.get() - set(value) { - delegate.set(value) - } -} - -internal actual class EventListeners actual constructor(clazz: KClass) : - LockFreeLinkedList>() { - @Suppress("UNCHECKED_CAST", "UNSUPPORTED", "NO_REFLECTION_IN_CLASS_PATH") - actual val supertypes: Set> by lazy { - val supertypes = mutableSetOf>() - - fun addSupertypes(clazz: KClass) { - clazz.supertypes.forEach { - val classifier = it.classifier as? KClass - if (classifier != null) { - supertypes.add(classifier) - addSupertypes(classifier) - } - } - } - addSupertypes(clazz) - - supertypes - } -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessagePacket.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessagePacket.kt deleted file mode 100644 index b3412c99e..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/MessagePacket.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("unused") - -package net.mamoe.mirai.message - -import android.graphics.Bitmap -import kotlinx.io.core.Input -import net.mamoe.mirai.contact.Contact -import net.mamoe.mirai.contact.QQ -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.utils.MiraiInternalAPI -import java.io.File -import java.io.InputStream -import java.net.URL - -/** - * 平台相关扩展 - */ -@Suppress("DEPRECATION") -@Deprecated( - message = "use ContactMessage", - replaceWith = ReplaceWith("ContactMessage", "net.mamoe.mirai.message.ContactMessage") -) -actual abstract class MessagePacket actual constructor() : - MessagePacketBase() { - - @JvmSynthetic - suspend inline fun uploadImage(image: Bitmap): Image = subject.uploadImage(image) - - @JvmSynthetic - suspend inline fun uploadImage(image: URL): Image = subject.uploadImage(image) - - @JvmSynthetic - suspend inline fun uploadImage(image: Input): Image = subject.uploadImage(image) - - @JvmSynthetic - suspend inline fun uploadImage(image: InputStream): Image = subject.uploadImage(image) - - @JvmSynthetic - suspend inline fun uploadImage(image: File): Image = subject.uploadImage(image) - - @JvmSynthetic - suspend inline fun sendImage(image: Bitmap): MessageReceipt = subject.sendImage(image) - - @JvmSynthetic - suspend inline fun sendImage(image: URL): MessageReceipt = subject.sendImage(image) - - @JvmSynthetic - suspend inline fun sendImage(image: Input): MessageReceipt = subject.sendImage(image) - - @JvmSynthetic - suspend inline fun sendImage(image: InputStream): MessageReceipt = subject.sendImage(image) - - @JvmSynthetic - suspend inline fun sendImage(image: File): MessageReceipt = subject.sendImage(image) - - @JvmSynthetic - suspend inline fun Bitmap.upload(): Image = upload(subject) - - @JvmSynthetic - suspend inline fun URL.uploadAsImage(): Image = uploadAsImage(subject) - - @JvmSynthetic - suspend inline fun Input.uploadAsImage(): Image = uploadAsImage(subject) - - @JvmSynthetic - suspend inline fun InputStream.uploadAsImage(): Image = uploadAsImage(subject) - - @JvmSynthetic - suspend inline fun File.uploadAsImage(): Image = uploadAsImage(subject) - - @JvmSynthetic - suspend inline fun Bitmap.send(): MessageReceipt = sendTo(subject) - - @JvmSynthetic - suspend inline fun URL.sendAsImage(): MessageReceipt = sendAsImageTo(subject) - - @JvmSynthetic - suspend inline fun Input.sendAsImage(): MessageReceipt = sendAsImageTo(subject) - - @JvmSynthetic - suspend inline fun InputStream.sendAsImage(): MessageReceipt = sendAsImageTo(subject) - - @JvmSynthetic - suspend inline fun File.sendAsImage(): MessageReceipt = sendAsImageTo(subject) -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/SendImageUtilsAndroid.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/SendImageUtilsAndroid.kt deleted file mode 100644 index 40d9d0e77..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/message/SendImageUtilsAndroid.kt +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("unused") - -package net.mamoe.mirai.message - -import android.graphics.Bitmap -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import kotlinx.io.core.Input -import net.mamoe.mirai.contact.Contact -import net.mamoe.mirai.message.data.Image -import net.mamoe.mirai.utils.OverFileSizeMaxException -import net.mamoe.mirai.utils.sendTo -import net.mamoe.mirai.utils.toExternalImage -import net.mamoe.mirai.utils.upload -import java.io.File -import java.io.InputStream -import java.net.URL - -/* - * 发送图片的一些扩展函数. - */ - -// region IMAGE.sendAsImageTo(Contact) - -/** - * 在 [Dispatchers.IO] 中将图片发送到指定联系人. 不会创建临时文件 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun Bitmap.sendTo(contact: C): MessageReceipt = - withContext(Dispatchers.IO) { toExternalImage() }.sendTo(contact) - -/** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun URL.sendAsImageTo(contact: C): MessageReceipt = - withContext(Dispatchers.IO) { toExternalImage() }.sendTo(contact) - -/** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun Input.sendAsImageTo(contact: C): MessageReceipt = - withContext(Dispatchers.IO) { toExternalImage() }.sendTo(contact) - -/** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun InputStream.sendAsImageTo(contact: C): MessageReceipt = - withContext(Dispatchers.IO) { toExternalImage() }.sendTo(contact) - -/** - * 在 [Dispatchers.IO] 中将文件作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun File.sendAsImageTo(contact: C): MessageReceipt { - require(this.exists() && this.canRead()) - return withContext(Dispatchers.IO) { toExternalImage() }.sendTo(contact) -} - -// endregion - -// region IMAGE.Upload(Contact): Image - -/** - * 在 [Dispatchers.IO] 中将图片上传后构造 [Image]. 不会创建临时文件 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun Bitmap.upload(contact: Contact): Image = withContext(Dispatchers.IO) { toExternalImage() }.upload(contact) - -/** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片上传后构造 [Image] - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun URL.uploadAsImage(contact: Contact): Image = - withContext(Dispatchers.IO) { toExternalImage() }.upload(contact) - -/** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片上传后构造 [Image] - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun Input.uploadAsImage(contact: Contact): Image = - withContext(Dispatchers.IO) { toExternalImage() }.upload(contact) - -/** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片上传后构造 [Image] - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun InputStream.uploadAsImage(contact: Contact): Image = - withContext(Dispatchers.IO) { toExternalImage() }.upload(contact) - -/** - * 在 [Dispatchers.IO] 中将文件作为图片上传后构造 [Image] - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend fun File.uploadAsImage(contact: Contact): Image { - require(this.exists() && this.canRead()) - return withContext(Dispatchers.IO) { toExternalImage() }.upload(contact) -} - -// endregion - -// region Contact.sendImage(IMAGE) - -/** - * 在 [Dispatchers.IO] 中将图片发送到指定联系人. 不会保存临时文件 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun C.sendImage(bufferedImage: Bitmap): MessageReceipt = bufferedImage.sendTo(this) - -/** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun C.sendImage(imageUrl: URL): MessageReceipt = imageUrl.sendAsImageTo(this) - -/** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun C.sendImage(imageInput: Input): MessageReceipt = imageInput.sendAsImageTo(this) - -/** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun C.sendImage(imageStream: InputStream): MessageReceipt = - imageStream.sendAsImageTo(this) - -/** - * 在 [Dispatchers.IO] 中将文件作为图片发送到指定联系人 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun C.sendImage(file: File): MessageReceipt = file.sendAsImageTo(this) - -// endregion - -// region Contact.uploadImage(IMAGE) - -/** - * 在 [Dispatchers.IO] 中将图片上传, 但不发送. 不会保存临时文件 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun Contact.uploadImage(bufferedImage: Bitmap): Image = bufferedImage.upload(this) - -/** - * 在 [Dispatchers.IO] 中下载 [URL] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun Contact.uploadImage(imageUrl: URL): Image = imageUrl.uploadAsImage(this) - -/** - * 在 [Dispatchers.IO] 中读取 [Input] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun Contact.uploadImage(imageInput: Input): Image = imageInput.uploadAsImage(this) - -/** - * 在 [Dispatchers.IO] 中读取 [InputStream] 到临时文件并将其作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun Contact.uploadImage(imageStream: InputStream): Image = imageStream.uploadAsImage(this) - -/** - * 在 [Dispatchers.IO] 中将文件作为图片上传, 但不发送 - * @throws OverFileSizeMaxException - */ -@Throws(OverFileSizeMaxException::class) -suspend inline fun Contact.uploadImage(file: File): Image = file.uploadAsImage(this) - -// endregion \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/ExternalImage.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/ExternalImage.android.kt deleted file mode 100644 index 3b8b7ab4a..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/ExternalImage.android.kt +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("EXPERIMENTAL_API_USAGE", "unused") - -package net.mamoe.mirai.utils -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import kotlinx.coroutines.Dispatchers.IO -import kotlinx.coroutines.withContext -import kotlinx.io.core.Input -import kotlinx.io.core.IoBuffer -import kotlinx.io.core.copyTo -import kotlinx.io.errors.IOException -import kotlinx.io.streams.asInput -import kotlinx.io.streams.asOutput -import net.mamoe.mirai.utils.internal.md5 -import java.io.File -import java.io.InputStream -import java.net.URL - -/* - * 将各类型图片容器转为 [ExternalImage] - */ - -/** - * 读取 [Bitmap] 的属性, 然后构造 [ExternalImage] - */ -@Suppress("UNUSED_PARAMETER") -@Throws(IOException::class) -fun Bitmap.toExternalImage(formatName: String = "gif"): ExternalImage { - TODO() -} - -// suspend inline fun BufferedImage.suspendToExternalImage(): ExternalImage = withContext(IO) { toExternalImage() } - -/** - * 读取文件头识别图片属性, 然后构造 [ExternalImage] - */ -@Throws(IOException::class) -fun File.toExternalImage(): ExternalImage { - val input = BitmapFactory.decodeFile(this.absolutePath) - checkNotNull(input) { "Unable to read file(path=${this.path}), BitmapFactory.decodeFile returned null" } - - return ExternalImage( - width = input.width, - height = input.height, - md5 = this.inputStream().use { it.md5() }, - imageFormat = this.nameWithoutExtension, - input = this.inputStream().asInput(IoBuffer.Pool), - inputSize = this.length(), - filename = this.name - ) -} - -/** - * 在 [IO] 中进行 [File.toExternalImage] - */ -suspend inline fun File.suspendToExternalImage(): ExternalImage = withContext(IO) { toExternalImage() } - -/** - * 下载文件到临时目录然后调用 [File.toExternalImage] - */ -@Throws(IOException::class) -fun URL.toExternalImage(): ExternalImage { - val file = createTempFile().apply { deleteOnExit() } - file.outputStream().asOutput().use { output -> - openStream().asInput().use { input -> - input.copyTo(output) - } - output.flush() - } - return file.toExternalImage() -} - -/** - * 在 [IO] 中进行 [URL.toExternalImage] - */ -suspend inline fun URL.suspendToExternalImage(): ExternalImage = withContext(IO) { toExternalImage() } - -/** - * 保存为临时文件然后调用 [File.toExternalImage] - */ -@Throws(IOException::class) -fun InputStream.toExternalImage(): ExternalImage { - val file = createTempFile().apply { deleteOnExit() } - file.outputStream().use { - this.copyTo(it) - it.flush() - } - this.close() - return file.toExternalImage() -} - -/** - * 在 [IO] 中进行 [InputStream.toExternalImage] - */ -suspend inline fun InputStream.suspendToExternalImage(): ExternalImage = withContext(IO) { toExternalImage() } - -/** - * 保存为临时文件然后调用 [File.toExternalImage]. - * - * 需要函数调用者 close [this] - */ -@Throws(IOException::class) -fun Input.toExternalImage(): ExternalImage { - val file = createTempFile().apply { deleteOnExit() } - file.outputStream().asOutput().use { - this.copyTo(it) - it.flush() - } - return file.toExternalImage() -} - -/** - * 在 [IO] 中进行 [Input.toExternalImage] - */ -suspend inline fun Input.suspendToExternalImage(): ExternalImage = withContext(IO) { toExternalImage() } - -/* -/** - * 保存为临时文件然后调用 [File.toExternalImage]. - */ -suspend fun ByteReadChannel.toExternalImage(): ExternalImage { - val file = createTempFile().apply { deleteOnExit() } - file.outputStream().use { - withContext(IO) { copyTo(it) } - it.flush() - } - - return file.suspendToExternalImage() -}*/ \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/LoginSolver.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/LoginSolver.android.kt deleted file mode 100644 index 617edf2a9..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/LoginSolver.android.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.utils - -import net.mamoe.mirai.Bot -import java.io.File - -actual typealias Throws = kotlin.jvm.Throws - -/** - * 验证码, 设备锁解决器 - */ -actual abstract class LoginSolver { - actual abstract suspend fun onSolvePicCaptcha(bot: Bot, data: ByteArray): String? - actual abstract suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? - actual abstract suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? - - actual companion object { - actual val Default: LoginSolver - get() = object : LoginSolver() { - override suspend fun onSolvePicCaptcha(bot: Bot, data: ByteArray): String? { - error("should be implemented manually by you") - } - - override suspend fun onSolveSliderCaptcha(bot: Bot, url: String): String? { - error("should be implemented manually by you") - } - - override suspend fun onSolveUnsafeDeviceLoginVerify(bot: Bot, url: String): String? { - error("should be implemented manually by you") - } - } - } - -} - -internal actual fun getFileBasedDeviceInfoSupplier(filename: String): ((Context) -> DeviceInfo)? { - return { - File(filename).loadAsDeviceInfo(it) - } -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt deleted file mode 100644 index 4a31ad010..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/OverFileSizeMaxException.kt +++ /dev/null @@ -1,6 +0,0 @@ -package net.mamoe.mirai.utils - -/** - * 图片文件过大 - */ -actual class OverFileSizeMaxException : IllegalStateException() \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.android.kt deleted file mode 100644 index 7d615c46b..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/PlatformLogger.android.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package net.mamoe.mirai.utils - -import android.util.Log - -/** - * Android 平台的默认的日志记录器, 使用 [Log] - * 不应该直接构造这个类的实例. 需使用 [DefaultLogger] - */ -actual open class PlatformLogger actual constructor(override val identity: String?) : MiraiLoggerPlatformBase() { - override fun verbose0(message: String?) { - Log.v(identity, message ?: "") - } - - override fun verbose0(message: String?, e: Throwable?) { - Log.v(identity, message ?: "", e) - } - - override fun debug0(message: String?) { - Log.d(identity, message ?: "") - } - - override fun debug0(message: String?, e: Throwable?) { - Log.d(identity, message ?: "", e) - } - - override fun info0(message: String?) { - Log.i(identity, message ?: "") - } - - override fun info0(message: String?, e: Throwable?) { - Log.i(identity, message ?: "", e) - } - - override fun warning0(message: String?) { - Log.w(identity, message ?: "") - } - - override fun warning0(message: String?, e: Throwable?) { - Log.w(identity, message ?: "", e) - } - - override fun error0(message: String?) { - Log.e(identity, message ?: "") - } - - override fun error0(message: String?, e: Throwable?) { - Log.e(identity, message ?: "", e) - } -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.android.kt deleted file mode 100644 index 2bec88cd7..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/SystemDeviceInfo.android.kt +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("unused") - -package net.mamoe.mirai.utils - -import android.annotation.SuppressLint -import android.net.wifi.WifiManager -import android.os.Build -import android.telephony.TelephonyManager -import kotlinx.io.core.toByteArray -import kotlinx.serialization.Serializable -import kotlinx.serialization.Transient -import kotlinx.serialization.UnstableDefault -import kotlinx.serialization.json.Json -import net.mamoe.mirai.utils.internal.md5 -import java.io.File - -/** - * 加载一个设备信息. 若文件不存在或为空则随机并创建一个设备信息保存. - */ -@OptIn(UnstableDefault::class) -fun File.loadAsDeviceInfo(context: Context): DeviceInfo { - if (!this.exists() || this.length() == 0L) { - return SystemDeviceInfo(context).also { - this.writeText(JSON.stringify(SystemDeviceInfo.serializer(), it)) - } - } - return JSON.parse(DeviceInfoData.serializer(), this.readText()).also { - it.context = context - } -} - -@OptIn(UnstableDefault::class) -private val JSON = Json { - isLenient = true - ignoreUnknownKeys = true -} - -/** - * 部分引用指向 [Build]. - * 部分需要权限, 若无权限则会使用默认值. - */ -@Serializable -actual open class SystemDeviceInfo actual constructor() : DeviceInfo() { - actual constructor(context: Context) : this() { - this.context = context - } - - @Transient - final override lateinit var context: Context - - override val display: ByteArray get() = Build.DISPLAY.orEmpty().toByteArray() - override val product: ByteArray get() = Build.PRODUCT.orEmpty().toByteArray() - override val device: ByteArray get() = Build.DEVICE.orEmpty().toByteArray() - override val board: ByteArray get() = Build.BOARD.orEmpty().toByteArray() - override val brand: ByteArray get() = Build.BRAND.orEmpty().toByteArray() - override val model: ByteArray get() = Build.MODEL.orEmpty().toByteArray() - override val bootloader: ByteArray get() = Build.BOOTLOADER.orEmpty().toByteArray() - - override val baseBand: ByteArray - @SuppressLint("PrivateApi") - @Suppress("SpellCheckingInspection") - get() = kotlin.runCatching { - Class.forName("android.os.SystemProperties").let { clazz -> - clazz.getMethod("get", String::class.java, String::class.java) - .invoke(clazz.newInstance(), "gsm.version.baseband", "no message") - ?.toString().orEmpty() - } - }.getOrElse { "" }.toByteArray() - - override val fingerprint: ByteArray get() = Build.FINGERPRINT.toByteArray() - override val procVersion: ByteArray - get() = kotlin.runCatching { File("/proc/version").useLines { it.firstOrNull().orEmpty() }.toByteArray() } - .getOrElse { byteArrayOf() } - override val bootId: ByteArray - get() = kotlin.runCatching { - File("/proc/sys/kernel/random/boot_id").useLines { it.firstOrNull().orEmpty() }.toByteArray() - }.getOrEmpty() - override val version: DeviceInfo.Version get() = Version - - override val simInfo: ByteArray - get() = kotlin.runCatching { - val telephonyManager = - context.applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager - if (telephonyManager.simState == 5) { - telephonyManager.simOperatorName.orEmpty().toByteArray() - } else byteArrayOf() - }.getOrEmpty() - - override val osType: ByteArray = "android".toByteArray() - override val macAddress: ByteArray get() = "02:00:00:00:00:00".toByteArray() - override val wifiBSSID: ByteArray? - get() = kotlin.runCatching { - (context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager).connectionInfo.bssid.orEmpty() - .toByteArray() - }.getOrEmpty() - - override val wifiSSID: ByteArray? - get() = kotlin.runCatching { - (context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager).connectionInfo.ssid.orEmpty() - .toByteArray() - }.getOrEmpty() - override val imsiMd5: ByteArray - @SuppressLint("HardwareIds") - get() = kotlin.runCatching { - (context.applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).subscriberId.orEmpty() - .toByteArray() - }.getOrEmpty().md5() - - override val imei: String - @SuppressLint("HardwareIds") - get() = kotlin.runCatching { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - (context.applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).imei - } else { - @Suppress("DEPRECATION") - (context.applicationContext.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).deviceId - }.orEmpty() - }.getOrElse { "" } - - override val androidId: ByteArray get() = Build.ID.toByteArray() - override val apn: ByteArray get() = "wifi".toByteArray() - - @Serializable - actual object Version : DeviceInfo.Version { - override val incremental: ByteArray get() = Build.VERSION.INCREMENTAL.orEmpty().toByteArray() - override val release: ByteArray get() = Build.VERSION.RELEASE.orEmpty().toByteArray() - override val codename: ByteArray get() = Build.VERSION.CODENAME.orEmpty().toByteArray() - override val sdk: Int get() = Build.VERSION.SDK_INT - } -} - -private val EMPTY_BYTE_ARRAY: ByteArray = ByteArray(0) - -@Suppress("NOTHING_TO_INLINE") -private inline fun Result.getOrEmpty() = this.getOrNull() ?: EMPTY_BYTE_ARRAY \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/addSuppressed.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/addSuppressed.android.kt deleted file mode 100644 index ab617e14d..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/addSuppressed.android.kt +++ /dev/null @@ -1,26 +0,0 @@ -@file:Suppress("DuplicatedCode") - -package net.mamoe.mirai.utils.internal - -import android.os.Build - -private var isAddSuppressedSupported: Boolean = true - -@PublishedApi -internal actual fun Throwable.addSuppressedMirai(e: Throwable) { - if (this == e) { - return - } - if (!isAddSuppressedSupported) { - return - } - try { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - this.addSuppressed(e) - } else { - isAddSuppressedSupported = false - } - } catch (e: Exception) { - isAddSuppressedSupported = false - } -} \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/md5.android.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/md5.android.kt deleted file mode 100644 index 13db2be72..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/md5.android.kt +++ /dev/null @@ -1,22 +0,0 @@ -@file:Suppress("EXPERIMENTAL_API_USAGE", "unused") - -package net.mamoe.mirai.utils.internal - -import java.io.InputStream -import java.security.MessageDigest - -internal actual fun ByteArray.md5(offset: Int, length: Int): ByteArray { - this.checkOffsetAndLength(offset, length) - return MessageDigest.getInstance("MD5").apply { update(this@md5, offset, length) }.digest() -} - -internal actual fun InputStream.md5(): ByteArray { - val digest = MessageDigest.getInstance("md5") - digest.reset() - this.readInSequence { - digest.update(it.toByte()) - } - return digest.digest() -} - -internal actual typealias InputStream = InputStream \ No newline at end of file diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt b/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt deleted file mode 100644 index c080aaeb3..000000000 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/internal/runBlocking.kt +++ /dev/null @@ -1,12 +0,0 @@ -package net.mamoe.mirai.utils.internal - -import kotlinx.coroutines.CoroutineScope -import kotlin.coroutines.CoroutineContext - -/** - * Mirror of `runBlocking` from `kotlinx.serialization` on JVM - */ -internal actual fun runBlocking( - context: CoroutineContext, - block: suspend CoroutineScope.() -> T -): T = kotlinx.coroutines.runBlocking(context, block) \ No newline at end of file diff --git a/mirai-core/src/androidTest/kotlin/net/mamoe/mirai/test/runBlocking.kt b/mirai-core/src/androidTest/kotlin/net/mamoe/mirai/test/runBlocking.kt deleted file mode 100644 index e954e0e5b..000000000 --- a/mirai-core/src/androidTest/kotlin/net/mamoe/mirai/test/runBlocking.kt +++ /dev/null @@ -1,9 +0,0 @@ -package net.mamoe.mirai.test - -import kotlinx.coroutines.CoroutineScope -import kotlin.coroutines.CoroutineContext - -internal actual fun runBlocking( - context: CoroutineContext, - block: suspend CoroutineScope.() -> R -): R = kotlinx.coroutines.runBlocking(context, block) \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotAccount.kt b/mirai-core/src/commonMain/kotlin/BotAccount.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotAccount.kt rename to mirai-core/src/commonMain/kotlin/BotAccount.kt index 7e1bf8be2..9c457ab81 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotAccount.kt +++ b/mirai-core/src/commonMain/kotlin/BotAccount.kt @@ -6,13 +6,12 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("EXPERIMENTAL_API_USAGE", "DEPRECATION_ERROR") -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import kotlinx.io.core.toByteArray -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils import net.mamoe.mirai.utils.MiraiExperimentalAPI import kotlin.jvm.JvmSynthetic diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt b/mirai-core/src/commonMain/kotlin/BotFactory.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt rename to mirai-core/src/commonMain/kotlin/BotFactory.kt index c67ad7c14..87640c0e3 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotFactory.kt +++ b/mirai-core/src/commonMain/kotlin/BotFactory.kt @@ -6,17 +6,16 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "FunctionName", "INAPPLICABLE_JVM_NAME", "DEPRECATION_ERROR", "DeprecatedCallableAddReplaceWith", "OverridingDeprecatedMember" ) -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import net.mamoe.mirai.Bot import net.mamoe.mirai.BotFactory -import net.mamoe.mirai.qqandroid.QQAndroid.Bot +import net.mamoe.mirai.internal.QQAndroid.Bot import net.mamoe.mirai.utils.BotConfiguration import net.mamoe.mirai.utils.Context import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotImpl.kt b/mirai-core/src/commonMain/kotlin/BotImpl.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotImpl.kt rename to mirai-core/src/commonMain/kotlin/BotImpl.kt index da52de868..d00791d40 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/BotImpl.kt +++ b/mirai-core/src/commonMain/kotlin/BotImpl.kt @@ -6,7 +6,6 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress( "EXPERIMENTAL_API_USAGE", "DEPRECATION_ERROR", @@ -15,7 +14,7 @@ "INVISIBLE_MEMBER" ) -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import kotlinx.coroutines.* import net.mamoe.mirai.Bot @@ -24,11 +23,11 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.BotOfflineEvent import net.mamoe.mirai.event.events.BotReloginEvent import net.mamoe.mirai.event.subscribeAlways +import net.mamoe.mirai.internal.network.BotNetworkHandler +import net.mamoe.mirai.internal.network.DefaultServerList +import net.mamoe.mirai.internal.network.closeAndJoin import net.mamoe.mirai.network.ForceOfflineException import net.mamoe.mirai.network.LoginFailedException -import net.mamoe.mirai.qqandroid.network.BotNetworkHandler -import net.mamoe.mirai.qqandroid.network.DefaultServerList -import net.mamoe.mirai.qqandroid.network.closeAndJoin import net.mamoe.mirai.supervisorJob import net.mamoe.mirai.utils.* import net.mamoe.mirai.utils.internal.retryCatching diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.common.kt b/mirai-core/src/commonMain/kotlin/QQAndroidBot.common.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.common.kt rename to mirai-core/src/commonMain/kotlin/QQAndroidBot.common.kt index 0af5a5bd0..ee7376a05 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.common.kt +++ b/mirai-core/src/commonMain/kotlin/QQAndroidBot.common.kt @@ -6,10 +6,9 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("EXPERIMENTAL_API_USAGE", "INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import io.ktor.client.request.* import io.ktor.client.request.forms.* @@ -31,27 +30,27 @@ import net.mamoe.mirai.event.events.MessageRecallEvent import net.mamoe.mirai.event.events.NewFriendRequestEvent import net.mamoe.mirai.event.internal.MiraiAtomicBoolean import net.mamoe.mirai.getGroupOrNull +import net.mamoe.mirai.internal.contact.FriendImpl +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.contact.MemberInfoImpl +import net.mamoe.mirai.internal.contact.checkIsGroupImpl +import net.mamoe.mirai.internal.message.* +import net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.highway.HighwayHelper +import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopNum +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.LongMsg +import net.mamoe.mirai.internal.network.protocol.packet.chat.* +import net.mamoe.mirai.internal.network.protocol.packet.chat.voice.PttStore +import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.action.Nudge import net.mamoe.mirai.message.data.* import net.mamoe.mirai.network.LoginFailedException -import net.mamoe.mirai.qqandroid.contact.FriendImpl -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.contact.MemberInfoImpl -import net.mamoe.mirai.qqandroid.contact.checkIsGroupImpl -import net.mamoe.mirai.qqandroid.message.* -import net.mamoe.mirai.qqandroid.network.QQAndroidBotNetworkHandler -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.highway.HighwayHelper -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.StTroopNum -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.LongMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.* -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.voice.PttStore -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray import net.mamoe.mirai.utils.* import kotlin.collections.asSequence import kotlin.contracts.contract @@ -60,7 +59,7 @@ import kotlin.jvm.JvmField import kotlin.jvm.JvmSynthetic import kotlin.math.absoluteValue import kotlin.random.Random -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.FriendInfo as JceFriendInfo +import net.mamoe.mirai.internal.network.protocol.data.jce.FriendInfo as JceFriendInfo internal fun Bot.asQQAndroidBot(): QQAndroidBot { contract { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt b/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt rename to mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt index fa12f0ac8..6e8e1f9b9 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/FriendImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/FriendImpl.kt @@ -16,7 +16,7 @@ "INVISIBLE_REFERENCE" ) -package net.mamoe.mirai.qqandroid.contact +package net.mamoe.mirai.internal.contact import kotlinx.atomicfu.AtomicInt import kotlinx.atomicfu.atomic @@ -30,17 +30,17 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.BeforeImageUploadEvent import net.mamoe.mirai.event.events.EventCancelledException import net.mamoe.mirai.event.events.ImageUploadEvent +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.highway.postImage +import net.mamoe.mirai.internal.network.highway.sizeToString +import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x352 +import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.toUHexString import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.Image import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.isContentNotEmpty -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.highway.postImage -import net.mamoe.mirai.qqandroid.network.highway.sizeToString -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0x352 -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.LongConn -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.toUHexString import net.mamoe.mirai.utils.ExternalImage import net.mamoe.mirai.utils.getValue import net.mamoe.mirai.utils.unsafeWeakRef @@ -54,7 +54,7 @@ import kotlin.math.roundToInt import kotlin.time.measureTime internal class FriendInfoImpl( - @JvmField private val jceFriendInfo: net.mamoe.mirai.qqandroid.network.protocol.data.jce.FriendInfo + @JvmField private val jceFriendInfo: net.mamoe.mirai.internal.network.protocol.data.jce.FriendInfo ) : FriendInfo { @JvmField internal var cachedNick: String? = null override val nick: String get() = cachedNick ?: jceFriendInfo.nick.also { cachedNick = it } diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt rename to mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt index c0bb87d5f..918a8896b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/GroupImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt @@ -10,7 +10,7 @@ @file:Suppress("INAPPLICABLE_JVM_NAME", "DEPRECATION_ERROR", "INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @file:OptIn(LowLevelAPI::class) -package net.mamoe.mirai.qqandroid.contact +package net.mamoe.mirai.internal.contact import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob @@ -22,22 +22,22 @@ import net.mamoe.mirai.data.GroupInfo import net.mamoe.mirai.data.MemberInfo import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.message.MessageSourceToGroupImpl +import net.mamoe.mirai.internal.message.ensureSequenceIdAvailable +import net.mamoe.mirai.internal.message.firstIsInstanceOrNull +import net.mamoe.mirai.internal.network.highway.HighwayHelper +import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement +import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.MessageSvcPbSendMsg +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.createToGroup +import net.mamoe.mirai.internal.network.protocol.packet.chat.voice.PttStore +import net.mamoe.mirai.internal.network.protocol.packet.list.ProfileService +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.estimateLength +import net.mamoe.mirai.internal.utils.toUHexString import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.message.MessageSourceToGroupImpl -import net.mamoe.mirai.qqandroid.message.ensureSequenceIdAvailable -import net.mamoe.mirai.qqandroid.message.firstIsInstanceOrNull -import net.mamoe.mirai.qqandroid.network.highway.HighwayHelper -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.TroopManagement -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvcPbSendMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.createToGroup -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.voice.PttStore -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.ProfileService -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.estimateLength -import net.mamoe.mirai.qqandroid.utils.toUHexString import net.mamoe.mirai.utils.* import java.io.InputStream import kotlin.contracts.contract diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt b/mirai-core/src/commonMain/kotlin/contact/MemberImpl.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt rename to mirai-core/src/commonMain/kotlin/contact/MemberImpl.kt index 613ce5b91..9af748cd4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/MemberImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/MemberImpl.kt @@ -9,7 +9,7 @@ @file:Suppress("EXPERIMENTAL_API_USAGE", "DEPRECATION_ERROR", "INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.contact +package net.mamoe.mirai.internal.contact import kotlinx.atomicfu.AtomicInt import kotlinx.atomicfu.atomic @@ -19,16 +19,16 @@ import net.mamoe.mirai.contact.* import net.mamoe.mirai.data.MemberInfo import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.message.MessageSourceToTempImpl +import net.mamoe.mirai.internal.message.ensureSequenceIdAvailable +import net.mamoe.mirai.internal.message.firstIsInstanceOrNull +import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopMemberInfo +import net.mamoe.mirai.internal.network.protocol.packet.chat.TroopManagement +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.MessageSvcPbSendMsg +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.createToTemp import net.mamoe.mirai.message.MessageReceipt import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.message.MessageSourceToTempImpl -import net.mamoe.mirai.qqandroid.message.ensureSequenceIdAvailable -import net.mamoe.mirai.qqandroid.message.firstIsInstanceOrNull -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.StTroopMemberInfo -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.TroopManagement -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvcPbSendMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.createToTemp import net.mamoe.mirai.utils.ExternalImage import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.getValue diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt b/mirai-core/src/commonMain/kotlin/contact/util.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt rename to mirai-core/src/commonMain/kotlin/contact/util.kt index a40c93c07..b254a8837 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/contact/util.kt +++ b/mirai-core/src/commonMain/kotlin/contact/util.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.contact +package net.mamoe.mirai.internal.contact import net.mamoe.mirai.contact.Contact import net.mamoe.mirai.contact.Friend @@ -18,16 +18,16 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.EventCancelledException import net.mamoe.mirai.event.events.FriendMessagePostSendEvent import net.mamoe.mirai.event.events.FriendMessagePreSendEvent +import net.mamoe.mirai.internal.asQQAndroidBot +import net.mamoe.mirai.internal.message.MessageSourceToFriendImpl +import net.mamoe.mirai.internal.message.ensureSequenceIdAvailable +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.MessageSvcPbSendMsg +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.createToFriend import net.mamoe.mirai.message.* import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.QuoteReply import net.mamoe.mirai.message.data.asMessageChain import net.mamoe.mirai.message.data.firstIsInstanceOrNull -import net.mamoe.mirai.qqandroid.asQQAndroidBot -import net.mamoe.mirai.qqandroid.message.MessageSourceToFriendImpl -import net.mamoe.mirai.qqandroid.message.ensureSequenceIdAvailable -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvcPbSendMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.createToFriend import net.mamoe.mirai.utils.verbose import kotlin.contracts.InvocationKind import kotlin.contracts.contract diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/FlashImageImpl.kt b/mirai-core/src/commonMain/kotlin/message/FlashImageImpl.kt similarity index 86% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/FlashImageImpl.kt rename to mirai-core/src/commonMain/kotlin/message/FlashImageImpl.kt index 429471ae7..81e23b104 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/FlashImageImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/FlashImageImpl.kt @@ -9,14 +9,14 @@ @file:Suppress("DEPRECATION_ERROR", "UnusedImport") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message +import net.mamoe.mirai.internal.network.protocol.data.proto.HummerCommelem +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.data.FriendFlashImage import net.mamoe.mirai.message.data.GroupFlashImage import net.mamoe.mirai.message.data.md5 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.HummerCommelem -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray internal fun GroupFlashImage.toJceData() = ImMsgBody.Elem( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/atImpl.kt b/mirai-core/src/commonMain/kotlin/message/atImpl.kt similarity index 92% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/atImpl.kt rename to mirai-core/src/commonMain/kotlin/message/atImpl.kt index e90d58cd2..89189cd92 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/atImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/atImpl.kt @@ -7,13 +7,13 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message import kotlinx.io.core.buildPacket import kotlinx.io.core.readBytes +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody import net.mamoe.mirai.message.data.At import net.mamoe.mirai.message.data.AtAll -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody internal fun At.toJceData(): ImMsgBody.Text { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/conversions.kt b/mirai-core/src/commonMain/kotlin/message/conversions.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/conversions.kt rename to mirai-core/src/commonMain/kotlin/message/conversions.kt index 9d96f1617..34c407767 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/conversions.kt +++ b/mirai-core/src/commonMain/kotlin/message/conversions.kt @@ -10,7 +10,7 @@ @file:OptIn(LowLevelAPI::class) @file:Suppress("EXPERIMENTAL_API_USAGE", "DEPRECATION_ERROR") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message import kotlinx.io.core.String import kotlinx.io.core.discardExact @@ -18,13 +18,13 @@ import kotlinx.io.core.readUInt import kotlinx.io.core.toByteArray import net.mamoe.mirai.Bot import net.mamoe.mirai.LowLevelAPI +import net.mamoe.mirai.internal.network.protocol.data.proto.HummerCommelem +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.io.serialization.loadAs +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.HummerCommelem -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.io.serialization.loadAs -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray import kotlin.contracts.ExperimentalContracts import kotlin.contracts.InvocationKind import kotlin.contracts.contract diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/faceImpl.kt b/mirai-core/src/commonMain/kotlin/message/faceImpl.kt similarity index 76% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/faceImpl.kt rename to mirai-core/src/commonMain/kotlin/message/faceImpl.kt index 13fc34193..48cf715d6 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/faceImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/faceImpl.kt @@ -7,12 +7,12 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.utils.hexToBytes +import net.mamoe.mirai.internal.utils.toByteArray import net.mamoe.mirai.message.data.Face -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.utils.hexToBytes -import net.mamoe.mirai.qqandroid.utils.toByteArray internal val FACE_BUF = "00 01 00 04 52 CC F5 D0".hexToBytes() diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/imagesImpl.kt b/mirai-core/src/commonMain/kotlin/message/imagesImpl.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/imagesImpl.kt rename to mirai-core/src/commonMain/kotlin/message/imagesImpl.kt index 013faf93d..2bc01a59d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/imagesImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/imagesImpl.kt @@ -9,11 +9,11 @@ @file:Suppress("DEPRECATION_ERROR") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.utils.hexToBytes import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.utils.hexToBytes import net.mamoe.mirai.utils.ExternalImage internal class OnlineGroupImageImpl( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/incomingSourceImpl.kt b/mirai-core/src/commonMain/kotlin/message/incomingSourceImpl.kt similarity index 92% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/incomingSourceImpl.kt rename to mirai-core/src/commonMain/kotlin/message/incomingSourceImpl.kt index 1b579ff5f..769d234a4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/incomingSourceImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/incomingSourceImpl.kt @@ -9,24 +9,24 @@ @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_OVERRIDE", "INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message import net.mamoe.mirai.Bot import net.mamoe.mirai.contact.Friend import net.mamoe.mirai.contact.Member import net.mamoe.mirai.event.internal.MiraiAtomicBoolean +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.SourceMsg +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SourceMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray internal interface MessageSourceInternal { val sequenceId: Int diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/offlineSourceImpl.kt b/mirai-core/src/commonMain/kotlin/message/offlineSourceImpl.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/offlineSourceImpl.kt rename to mirai-core/src/commonMain/kotlin/message/offlineSourceImpl.kt index 07ab60e71..822487a0e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/offlineSourceImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/offlineSourceImpl.kt @@ -9,17 +9,17 @@ @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_OVERRIDE", "INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message import net.mamoe.mirai.Bot import net.mamoe.mirai.event.internal.MiraiAtomicBoolean +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.SourceMsg +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.serialization.loadAs import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.OfflineMessageSource -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SourceMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.serialization.loadAs internal class OfflineMessageSourceImplByMsg( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/outgoingSourceImpl.kt b/mirai-core/src/commonMain/kotlin/message/outgoingSourceImpl.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/outgoingSourceImpl.kt rename to mirai-core/src/commonMain/kotlin/message/outgoingSourceImpl.kt index 6f2446372..6e31f1bd8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/outgoingSourceImpl.kt +++ b/mirai-core/src/commonMain/kotlin/message/outgoingSourceImpl.kt @@ -9,7 +9,7 @@ @file:Suppress("EXPERIMENTAL_API_USAGE", "EXPERIMENTAL_OVERRIDE", "INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid.message +package net.mamoe.mirai.internal.message import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Deferred @@ -20,14 +20,14 @@ import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.Member import net.mamoe.mirai.event.asyncFromEventOrNull import net.mamoe.mirai.event.internal.MiraiAtomicBoolean +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.SourceMsg +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.OnlinePushPbPushGroupMsg.SendGroupMessageReceipt +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.MessageSource import net.mamoe.mirai.message.data.OnlineMessageSource -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.SourceMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.OnlinePushPbPushGroupMsg.SendGroupMessageReceipt -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray private fun T.toJceDataImpl(): ImMsgBody.SourceMsg diff --git a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Serializable.kt b/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Serializable.kt deleted file mode 100644 index a0f045ac0..000000000 --- a/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/utils/java.bindings/io/Serializable.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * * Copyright 2020 Mamoe Technologies and contributors. - * * - * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * * - * * https://github.com/mamoe/mirai/blob/master/LICENSE - * - */ - -@file:Suppress( - "unused", - "NO_ACTUAL_FOR_EXPECT", - "PackageDirectoryMismatch", - "NON_FINAL_MEMBER_IN_FINAL_CLASS", - "VIRTUAL_MEMBER_HIDDEN" -) - -/** - * Bindings for JDK. - * - * All the sources are copied from OpenJDK. Copyright OpenJDK authors. - */ - -package java.io - -public expect interface Serializable \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/BotNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/BotNetworkHandler.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/BotNetworkHandler.kt rename to mirai-core/src/commonMain/kotlin/network/BotNetworkHandler.kt index c4cc3fb52..0f9b6ba7a 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/BotNetworkHandler.kt +++ b/mirai-core/src/commonMain/kotlin/network/BotNetworkHandler.kt @@ -9,7 +9,7 @@ @file:Suppress("EXPERIMENTAL_API_USAGE") -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableJob diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Packet.kt b/mirai-core/src/commonMain/kotlin/network/Packet.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Packet.kt rename to mirai-core/src/commonMain/kotlin/network/Packet.kt index ce6a12693..e994dc53e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Packet.kt +++ b/mirai-core/src/commonMain/kotlin/network/Packet.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network /* diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt rename to mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt index 46263e461..c5e5ffbea 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidBotNetworkHandler.kt +++ b/mirai-core/src/commonMain/kotlin/network/QQAndroidBotNetworkHandler.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network import kotlinx.atomicfu.AtomicRef import kotlinx.atomicfu.atomic @@ -23,27 +23,27 @@ import net.mamoe.mirai.event.* import net.mamoe.mirai.event.events.BotOfflineEvent import net.mamoe.mirai.event.events.BotOnlineEvent import net.mamoe.mirai.event.events.BotReloginEvent +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.* +import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopNum +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.* +import net.mamoe.mirai.internal.network.protocol.packet.KnownPacketFactories.PacketFactoryIllegalState10008Exception +import net.mamoe.mirai.internal.network.protocol.packet.chat.GroupInfoImpl +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.MessageSvcPbGetMsg +import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList +import net.mamoe.mirai.internal.network.protocol.packet.login.ConfigPushSvc +import net.mamoe.mirai.internal.network.protocol.packet.login.Heartbeat +import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc +import net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.io.readPacketExact +import net.mamoe.mirai.internal.utils.io.useBytes import net.mamoe.mirai.message.MessageEvent import net.mamoe.mirai.network.ForceOfflineException import net.mamoe.mirai.network.RetryLaterException import net.mamoe.mirai.network.UnsupportedSMSLoginException import net.mamoe.mirai.network.WrongPasswordException -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.* -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.StTroopNum -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.* -import net.mamoe.mirai.qqandroid.network.protocol.packet.KnownPacketFactories.PacketFactoryIllegalState10008Exception -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.MessageSvcPbGetMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.ConfigPushSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.WtLogin -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.io.readPacketExact -import net.mamoe.mirai.qqandroid.utils.io.useBytes import net.mamoe.mirai.utils.* import kotlin.coroutines.CoroutineContext import kotlin.jvm.JvmField diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt b/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt rename to mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt index 4d53d7606..acb2c5a13 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/QQAndroidClient.kt +++ b/mirai-core/src/commonMain/kotlin/network/QQAndroidClient.kt @@ -9,25 +9,25 @@ @file:Suppress("NOTHING_TO_INLINE", "EXPERIMENTAL_API_USAGE", "DEPRECATION_ERROR") -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network import kotlinx.atomicfu.AtomicBoolean import kotlinx.atomicfu.AtomicInt import kotlinx.atomicfu.atomic import kotlinx.io.core.* import net.mamoe.mirai.data.OnlineStatus +import net.mamoe.mirai.internal.BotAccount +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.protocol.SyncingCacheList +import net.mamoe.mirai.internal.network.protocol.data.jce.FileStoragePushFSSvcListFuckKotlin +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.network.protocol.packet.PacketLogger +import net.mamoe.mirai.internal.network.protocol.packet.Tlv +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.cryptor.ECDH +import net.mamoe.mirai.internal.utils.cryptor.TEA import net.mamoe.mirai.network.LoginFailedException import net.mamoe.mirai.network.NoServerAvailableException -import net.mamoe.mirai.qqandroid.BotAccount -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.protocol.SyncingCacheList -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.FileStoragePushFSSvcListFuckKotlin -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketLogger -import net.mamoe.mirai.qqandroid.network.protocol.packet.Tlv -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.cryptor.ECDH -import net.mamoe.mirai.qqandroid.utils.cryptor.TEA import net.mamoe.mirai.utils.* import kotlin.jvm.Volatile import kotlin.random.Random @@ -39,7 +39,7 @@ internal val DeviceInfo.guid: ByteArray get() = generateGuid(androidId, macAddre */ @Suppress("RemoveRedundantQualifierName") // bug private fun generateGuid(androidId: ByteArray, macAddress: ByteArray): ByteArray = - net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils.md5(androidId + macAddress) + net.mamoe.mirai.internal.utils.MiraiPlatformUtils.md5(androidId + macAddress) /** * 生成长度为 [length], 元素为随机 `0..255` 的 [ByteArray] @@ -308,7 +308,7 @@ internal open class QQAndroidClient( @Suppress("RemoveRedundantQualifierName") // bug internal fun generateTgtgtKey(guid: ByteArray): ByteArray = - net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils.md5(getRandomByteArray(16) + guid) + net.mamoe.mirai.internal.utils.MiraiPlatformUtils.md5(getRandomByteArray(16) + guid) internal class ReserveUinInfo( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Ticket.kt b/mirai-core/src/commonMain/kotlin/network/Ticket.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Ticket.kt rename to mirai-core/src/commonMain/kotlin/network/Ticket.kt index 1aaa550d3..be06d29c1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/Ticket.kt +++ b/mirai-core/src/commonMain/kotlin/network/Ticket.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network +package net.mamoe.mirai.internal.network internal class Ticket( val id: Int, diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/HighwayHelper.kt b/mirai-core/src/commonMain/kotlin/network/highway/HighwayHelper.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/HighwayHelper.kt rename to mirai-core/src/commonMain/kotlin/network/highway/HighwayHelper.kt index e13737f94..ced1b329f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/HighwayHelper.kt +++ b/mirai-core/src/commonMain/kotlin/network/highway/HighwayHelper.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid.network.highway +package net.mamoe.mirai.internal.network.highway import io.ktor.client.* import io.ktor.client.request.* @@ -23,12 +23,12 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.withTimeoutOrNull import kotlinx.io.core.discardExact import kotlinx.io.core.use -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.withUse +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.CSDataHighwayHead +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.withUse import net.mamoe.mirai.utils.internal.ReusableInput import net.mamoe.mirai.utils.verbose import kotlin.coroutines.EmptyCoroutineContext diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/highway.kt b/mirai-core/src/commonMain/kotlin/network/highway/highway.kt similarity index 88% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/highway.kt rename to mirai-core/src/commonMain/kotlin/network/highway/highway.kt index cece26549..bd7a98e5e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/highway/highway.kt +++ b/mirai-core/src/commonMain/kotlin/network/highway/highway.kt @@ -9,17 +9,17 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.network.highway +package net.mamoe.mirai.internal.network.highway import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.buildPacket import kotlinx.io.core.writeFully -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.CSDataHighwayHead -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.CSDataHighwayHead +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.ByteArrayPool +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import net.mamoe.mirai.utils.internal.ChunkedFlowSession import net.mamoe.mirai.utils.internal.ChunkedInput import net.mamoe.mirai.utils.internal.ReusableInput diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/LoginType.kt b/mirai-core/src/commonMain/kotlin/network/protocol/LoginType.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/LoginType.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/LoginType.kt index 337fb9318..f7beda74d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/LoginType.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/LoginType.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol +package net.mamoe.mirai.internal.network.protocol internal inline class LoginType( val value: Int diff --git a/mirai-core/src/commonMain/kotlin/network/protocol/SyncingCacheList.kt b/mirai-core/src/commonMain/kotlin/network/protocol/SyncingCacheList.kt new file mode 100644 index 000000000..366a629c8 --- /dev/null +++ b/mirai-core/src/commonMain/kotlin/network/protocol/SyncingCacheList.kt @@ -0,0 +1,24 @@ +/* + * Copyright 2019-2020 Mamoe Technologies and contributors. + * + * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. + * + * https://github.com/mamoe/mirai/blob/master/LICENSE + */ +package net.mamoe.mirai.internal.network.protocol + +import net.mamoe.mirai.internal.utils.LinkedList +import kotlin.jvm.Synchronized + +internal class SyncingCacheList(private val size: Int = 50) { + private val packetIdList = LinkedList() + + @Synchronized // faster than suspending Mutex + fun addCache(element: E): Boolean { + if (packetIdList.contains(element)) return false // duplicate + packetIdList.addLast(element) + if (packetIdList.size >= size) packetIdList.removeFirst() + return true + } +} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/ConfigPush.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/ConfigPush.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/ConfigPush.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/ConfigPush.kt index 6f43566e3..e68276f81 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/ConfigPush.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/ConfigPush.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/FriendList.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/FriendList.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/FriendList.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/FriendList.kt index 3f493efdc..d556cd2ac 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/FriendList.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/FriendList.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/GroupMngReq.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/GroupMngReq.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/GroupMngReq.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/GroupMngReq.kt index 5fd921d74..9c61b603b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/GroupMngReq.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/GroupMngReq.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/MsgType0x210.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/MsgType0x210.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/MsgType0x210.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/MsgType0x210.kt index 63960a5cb..fc0f76193 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/MsgType0x210.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/MsgType0x210.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/OnlinePushPack.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/OnlinePushPack.kt index 4e0e6bfd6..7ea01f2b5 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/OnlinePushPack.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/OnlinePushPack.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField internal class OnlinePushPack { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/PushNotifyPack.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/PushNotifyPack.kt index 8ae5e7725..c6b9da922 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/PushNotifyPack.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/PushNotifyPack.kt @@ -1,10 +1,10 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Suppress("ArrayInDataClass") diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestMSFForceOffline.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestMSFForceOffline.kt similarity index 80% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestMSFForceOffline.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestMSFForceOffline.kt index 763e37c49..34f6dd9da 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestMSFForceOffline.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestMSFForceOffline.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPacket.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPacket.kt similarity index 83% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPacket.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPacket.kt index 5213de074..e1b57c435 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPacket.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPacket.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField private val EMPTY_MAP = mapOf() diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPushForceOffline.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPushForceOffline.kt similarity index 64% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPushForceOffline.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPushForceOffline.kt index 41becb63a..1ed8759a0 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/RequestPushForceOffline.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/RequestPushForceOffline.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/SvcReqRegister.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/SvcReqRegister.kt similarity index 92% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/SvcReqRegister.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/SvcReqRegister.kt index cbfd9362c..f5cc87441 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/SvcReqRegister.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/SvcReqRegister.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/TroopList.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/TroopList.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/TroopList.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/jce/TroopList.kt index 5eb587bab..53400b573 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/jce/TroopList.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/jce/TroopList.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.jce +package net.mamoe.mirai.internal.network.protocol.data.jce import kotlinx.serialization.Serializable -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x352.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x352.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt index 285c8f854..e8c969828 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x352.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x352.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x388.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x388.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x388.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x388.kt index 8174dd523..6ad0d6e68 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x388.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x388.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x857.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x857.kt index a092966d1..7b000abd4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x857.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x857.kt @@ -1,13 +1,13 @@ @file:Suppress("SpellCheckingInspection") -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoNumber import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class GroupOpenSysMsg : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x858.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x858.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x858.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x858.kt index 87b8fe022..9e544c4ac 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Cmd0x858.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Cmd0x858.kt @@ -1,13 +1,13 @@ @file:Suppress("SpellCheckingInspection") -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoNumber import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Define.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Define.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Define.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Define.kt index 0f65443f2..69b3b9d00 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Define.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Define.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class Common : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/FriendListCommon.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/FriendListCommon.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/FriendListCommon.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/FriendListCommon.kt index 42ba5954d..480568c01 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/FriendListCommon.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/FriendListCommon.kt @@ -1,11 +1,11 @@ @file:Suppress("SpellCheckingInspection") -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable @@ -68,6 +68,6 @@ internal class Vec0xd6b : ProtoBuf { internal class MutualMarkData( @ProtoNumber(1) @JvmField val frdUin: Long = 0L, @ProtoNumber(2) @JvmField val result: Int = 0 - // @SerialId(11) @JvmField val mutualmarkInfo: List? = null + // @SerialId(11) @JvmField val mutualmarkInfo: List? = null ) : ProtoBuf } \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Group.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Group.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Group.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Group.kt index 5e1affba7..d054d85fb 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Group.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Group.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Highway.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Highway.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt index 2e0b1802d..bf1c168b2 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Highway.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Highway.kt @@ -1,11 +1,11 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoNumber import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/HummerCommelem.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/HummerCommelem.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/HummerCommelem.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/HummerCommelem.kt index 94f4e73ef..885c1b46f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/HummerCommelem.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/HummerCommelem.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class HummerCommelem : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/ImageRequest.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/ImageRequest.kt similarity index 92% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/ImageRequest.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/ImageRequest.kt index 5bde38c11..5d3532674 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/ImageRequest.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/ImageRequest.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.ProtoBuf import net.mamoe.mirai.utils.currentTimeSeconds import kotlin.jvm.JvmField diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/LongMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/LongMsg.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/LongMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/LongMsg.kt index 16cc90192..2d68e9814 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/LongMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/LongMsg.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class LongMsg : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Msg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Msg.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Msg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Msg.kt index c3b8b732f..35ff35b4f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Msg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Msg.kt @@ -1,12 +1,12 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoNumber import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgCommon.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgCommon.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgCommon.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgCommon.kt index cb83908af..422add782 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgCommon.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgCommon.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgRevokeUserDef.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgRevokeUserDef.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgRevokeUserDef.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgRevokeUserDef.kt index 85733e881..354f52b2c 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgRevokeUserDef.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgRevokeUserDef.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class MsgRevokeUserDef : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgSvc.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgSvc.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgSvc.kt index f357e0af6..c32202fb7 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgSvc.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgSvc.kt @@ -1,10 +1,10 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgTransmit.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgTransmit.kt similarity index 79% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgTransmit.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgTransmit.kt index f70500332..67a94e8bc 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MsgTransmit.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MsgTransmit.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class MsgTransmit : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MultiMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MultiMsg.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MultiMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MultiMsg.kt index c85829b3b..428a9385a 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/MultiMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/MultiMsg.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OIDB.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OIDB.kt index ad51169fb..6a74d4d1f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OIDB.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OIDB.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Oidb0x769.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Oidb0x769.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Oidb0x769.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Oidb0x769.kt index 4df1a17d9..936940226 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/Oidb0x769.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/Oidb0x769.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class Oidb0x769 { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OnlinePush.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OnlinePush.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OnlinePush.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OnlinePush.kt index b22ac70ac..018c0a006 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/OnlinePush.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/OnlinePush.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/PbReserve.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/PbReserve.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/PbReserve.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/PbReserve.kt index 146366bfd..a30a1fd87 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/PbReserve.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/PbReserve.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class Generalflags : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StatSvcGetOnline.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StatSvcGetOnline.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StatSvcGetOnline.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StatSvcGetOnline.kt index f5f113f74..7d83d0a35 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StatSvcGetOnline.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StatSvcGetOnline.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class StatSvcGetOnline { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StructMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StructMsg.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StructMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StructMsg.kt index 43de46657..78be7d4a0 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/StructMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/StructMsg.kt @@ -1,9 +1,9 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField internal class QPayReminderMsg : ProtoBuf { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/SyncCookie.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/SyncCookie.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/SyncCookie.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/SyncCookie.kt index 917c5d919..832451894 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/SyncCookie.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/SyncCookie.kt @@ -1,8 +1,8 @@ -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField import kotlin.math.absoluteValue import kotlin.random.Random diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/msgType0x210.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/data/proto/msgType0x210.kt index a96ed5b48..dd0d64307 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/data/proto/msgType0x210.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/data/proto/msgType0x210.kt @@ -1,13 +1,13 @@ @file:Suppress("unused", "SpellCheckingInspection") -package net.mamoe.mirai.qqandroid.network.protocol.data.proto +package net.mamoe.mirai.internal.network.protocol.data.proto import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoNumber import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.utils.io.ProtoBuf import kotlin.jvm.JvmField @Serializable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/EncryptMethod.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/EncryptMethod.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/EncryptMethod.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/EncryptMethod.kt index 2d3d26203..24d0f58ab 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/EncryptMethod.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/EncryptMethod.kt @@ -7,17 +7,17 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet +package net.mamoe.mirai.internal.network.protocol.packet import kotlinx.io.core.BytePacketBuilder import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.buildPacket import kotlinx.io.core.writeFully -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.utils.cryptor.ECDH -import net.mamoe.mirai.qqandroid.utils.cryptor.ECDHKeyPair -import net.mamoe.mirai.qqandroid.utils.io.encryptAndWrite -import net.mamoe.mirai.qqandroid.utils.io.writeShortLVByteArray +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.utils.cryptor.ECDH +import net.mamoe.mirai.internal.utils.cryptor.ECDHKeyPair +import net.mamoe.mirai.internal.utils.io.encryptAndWrite +import net.mamoe.mirai.internal.utils.io.writeShortLVByteArray internal interface EncryptMethod { val id: Int diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/OutgoingPacketAndroid.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacketAndroid.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/OutgoingPacketAndroid.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacketAndroid.kt index c77d83880..772ab4ed7 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/OutgoingPacketAndroid.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/OutgoingPacketAndroid.kt @@ -7,17 +7,17 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet +package net.mamoe.mirai.internal.network.protocol.packet import kotlinx.io.core.BytePacketBuilder import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.buildPacket import kotlinx.io.core.writeFully -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.utils.io.encryptAndWrite -import net.mamoe.mirai.qqandroid.utils.io.writeHex -import net.mamoe.mirai.qqandroid.utils.io.writeIntLVPacket +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.utils.io.encryptAndWrite +import net.mamoe.mirai.internal.utils.io.writeHex +import net.mamoe.mirai.internal.utils.io.writeIntLVPacket internal class OutgoingPacket constructor( name: String?, diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt index 25333a7d0..d6bbcf4e9 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/PacketFactory.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/PacketFactory.kt @@ -7,31 +7,31 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet +package net.mamoe.mirai.internal.network.protocol.packet import kotlinx.io.core.* import net.mamoe.mirai.event.Event -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.* -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.LongConn -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive.* -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.voice.PttStore -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.ProfileService -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.ConfigPushSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.Heartbeat -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.StatSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.login.WtLogin -import net.mamoe.mirai.qqandroid.network.readUShortLVByteArray -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.cryptor.TEA -import net.mamoe.mirai.qqandroid.utils.cryptor.adjustToPublicKey -import net.mamoe.mirai.qqandroid.utils.io.readPacketExact -import net.mamoe.mirai.qqandroid.utils.io.readString -import net.mamoe.mirai.qqandroid.utils.io.useBytes -import net.mamoe.mirai.qqandroid.utils.io.withUse +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.protocol.packet.chat.* +import net.mamoe.mirai.internal.network.protocol.packet.chat.image.ImgStore +import net.mamoe.mirai.internal.network.protocol.packet.chat.image.LongConn +import net.mamoe.mirai.internal.network.protocol.packet.chat.receive.* +import net.mamoe.mirai.internal.network.protocol.packet.chat.voice.PttStore +import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList +import net.mamoe.mirai.internal.network.protocol.packet.list.ProfileService +import net.mamoe.mirai.internal.network.protocol.packet.login.ConfigPushSvc +import net.mamoe.mirai.internal.network.protocol.packet.login.Heartbeat +import net.mamoe.mirai.internal.network.protocol.packet.login.StatSvc +import net.mamoe.mirai.internal.network.protocol.packet.login.WtLogin +import net.mamoe.mirai.internal.network.readUShortLVByteArray +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.cryptor.TEA +import net.mamoe.mirai.internal.utils.cryptor.adjustToPublicKey +import net.mamoe.mirai.internal.utils.io.readPacketExact +import net.mamoe.mirai.internal.utils.io.readString +import net.mamoe.mirai.internal.utils.io.useBytes +import net.mamoe.mirai.internal.utils.io.withUse import net.mamoe.mirai.utils.* import kotlin.jvm.JvmName import kotlin.jvm.JvmOverloads diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/Tlv.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/Tlv.kt index 39ce8370c..93bac6fa3 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/Tlv.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/Tlv.kt @@ -9,17 +9,17 @@ @file:Suppress("NOTHING_TO_INLINE") -package net.mamoe.mirai.qqandroid.network.protocol.packet +package net.mamoe.mirai.internal.network.protocol.packet import kotlinx.io.core.BytePacketBuilder import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.toByteArray import kotlinx.io.core.writeFully -import net.mamoe.mirai.qqandroid.network.protocol.LoginType -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.NetworkType -import net.mamoe.mirai.qqandroid.utils.io.* -import net.mamoe.mirai.qqandroid.utils.toByteArray +import net.mamoe.mirai.internal.network.protocol.LoginType +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.NetworkType +import net.mamoe.mirai.internal.utils.io.* +import net.mamoe.mirai.internal.utils.toByteArray import net.mamoe.mirai.utils.currentTimeMillis import kotlin.random.Random diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ChatType.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/ChatType.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ChatType.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/ChatType.kt index e5ae71c56..80f60100f 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/ChatType.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/ChatType.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat internal enum class ChatType(val internalID: Int) { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt similarity index 81% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt index 8133fde99..ae8b21fad 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/MultiMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/MultiMsg.kt @@ -9,28 +9,28 @@ @file:Suppress("EXPERIMENTAL_API_USAGE") -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat import kotlinx.io.core.ByteReadPacket +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.message.toRichTextElems +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgTransmit +import net.mamoe.mirai.internal.network.protocol.data.proto.MultiMsg +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.PacketLogger +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf import net.mamoe.mirai.message.data.ForwardMessage import net.mamoe.mirai.message.data.asMessageChain -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.message.toRichTextElems -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgTransmit -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MultiMsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.PacketLogger -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf internal class MessageValidationData( val data: ByteArray, diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NewContact.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NewContact.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NewContact.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NewContact.kt index 4cb016810..ecdb29218 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NewContact.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NewContact.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_MEMBER") -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.readBytes @@ -18,16 +18,16 @@ import net.mamoe.mirai.event.events.BotLeaveEvent import net.mamoe.mirai.event.events.MemberJoinRequestEvent import net.mamoe.mirai.event.events.NewFriendRequestEvent import net.mamoe.mirai.getGroupOrNull -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.message.contextualBugReportException -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Structmsg -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.loadAs -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.message.contextualBugReportException +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.Structmsg +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.io.serialization.loadAs +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal class NewContact { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NudgePacket.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NudgePacket.kt similarity index 74% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NudgePacket.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NudgePacket.kt index a4c602a7a..363ae5938 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/NudgePacket.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/NudgePacket.kt @@ -7,21 +7,21 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.readBytes -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0xed3 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.OidbSso -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.loadAs -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0xed3 +import net.mamoe.mirai.internal.network.protocol.data.proto.OidbSso +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.loadAs +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal object NudgePacket : OutgoingPacketFactory("OidbSvc.0xed3") { override suspend fun ByteReadPacket.decode(bot: QQAndroidBot): Response { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/PbMessageSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/PbMessageSvc.kt similarity index 88% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/PbMessageSvc.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/PbMessageSvc.kt index 8795efdab..b19d335ae 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/PbMessageSvc.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/PbMessageSvc.kt @@ -9,21 +9,21 @@ @file:Suppress("EXPERIMENTAL_API_USAGE") -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgRevokeUserDef -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.hexToBytes -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgRevokeUserDef +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.hexToBytes +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal class PbMessageSvc { object PbMsgWithDraw : OutgoingPacketFactory( diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/TroopManagement.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/TroopManagement.kt index c2d75eaf2..31f9a463b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/TroopManagement.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/TroopManagement.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat +package net.mamoe.mirai.internal.network.protocol.packet.chat import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.buildPacket @@ -15,18 +15,18 @@ import kotlinx.io.core.readBytes import kotlinx.io.core.toByteArray import net.mamoe.mirai.LowLevelAPI import net.mamoe.mirai.contact.Member -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.ModifyGroupCardReq -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.StTroopNum -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.stUinInfo -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.* -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.* +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.jce.ModifyGroupCardReq +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.network.protocol.data.jce.StTroopNum +import net.mamoe.mirai.internal.network.protocol.data.jce.stUinInfo +import net.mamoe.mirai.internal.network.protocol.data.proto.* +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.* import net.mamoe.mirai.utils.daysToSeconds import net.mamoe.mirai.data.GroupInfo as MiraiGroupInfo diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImgStore.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/ImgStore.kt similarity index 85% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImgStore.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/ImgStore.kt index c62b7c480..19a0f534d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/ImgStore.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/ImgStore.kt @@ -7,19 +7,19 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image +package net.mamoe.mirai.internal.network.protocol.packet.chat.image import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0x388 -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.toLongUnsigned -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x388 +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.network.protocol.packet.chat.toLongUnsigned +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf import kotlin.random.Random import kotlin.random.nextInt diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/LongConn.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/LongConn.kt similarity index 81% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/LongConn.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/LongConn.kt index 4e49557e9..f6eb833e8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/image/LongConn.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/image/LongConn.kt @@ -7,19 +7,19 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image +package net.mamoe.mirai.internal.network.protocol.packet.chat.image import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0x352 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.GetImgUrlReq -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x352 +import net.mamoe.mirai.internal.network.protocol.data.proto.GetImgUrlReq +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal class LongConn { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt similarity index 76% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt index a64edb515..316c9765b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbDeleteMsg.kt @@ -7,19 +7,19 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.toList import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal object MessageSvcPbDeleteMsg : OutgoingPacketFactory("MessageSvc.PbDeleteMsg") { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt index 719a09dde..2d063ca50 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbGetMsg.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.atomicfu.loop import kotlinx.coroutines.CoroutineName @@ -28,30 +28,30 @@ import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.events.BotJoinGroupEvent import net.mamoe.mirai.event.events.MemberJoinEvent import net.mamoe.mirai.getFriendOrNull +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.contact.checkIsFriendImpl +import net.mamoe.mirai.internal.contact.checkIsMemberImpl +import net.mamoe.mirai.internal.message.toMessageChain +import net.mamoe.mirai.internal.network.MultiPacket +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.network.protocol.packet.chat.GroupInfoImpl +import net.mamoe.mirai.internal.network.protocol.packet.chat.NewContact +import net.mamoe.mirai.internal.network.protocol.packet.chat.toLongUnsigned +import net.mamoe.mirai.internal.network.protocol.packet.list.FriendList +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.utils.read +import net.mamoe.mirai.internal.utils.toInt +import net.mamoe.mirai.internal.utils.toUHexString import net.mamoe.mirai.message.FriendMessageEvent import net.mamoe.mirai.message.TempMessageEvent -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.contact.checkIsFriendImpl -import net.mamoe.mirai.qqandroid.contact.checkIsMemberImpl -import net.mamoe.mirai.qqandroid.message.toMessageChain -import net.mamoe.mirai.qqandroid.network.MultiPacket -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.GroupInfoImpl -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.NewContact -import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.toLongUnsigned -import net.mamoe.mirai.qqandroid.network.protocol.packet.list.FriendList -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf -import net.mamoe.mirai.qqandroid.utils.read -import net.mamoe.mirai.qqandroid.utils.toInt -import net.mamoe.mirai.qqandroid.utils.toUHexString import net.mamoe.mirai.utils.debug import net.mamoe.mirai.utils.warning import kotlin.random.Random diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt similarity index 87% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt index 0dda51956..45a5e68ec 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PbSendMsg.kt @@ -7,34 +7,34 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.toByteArray import net.mamoe.mirai.contact.Friend import net.mamoe.mirai.contact.Group import net.mamoe.mirai.contact.Member +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.message.MessageSourceToFriendImpl +import net.mamoe.mirai.internal.message.MessageSourceToGroupImpl +import net.mamoe.mirai.internal.message.MessageSourceToTempImpl +import net.mamoe.mirai.internal.message.toRichTextElems +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgComm +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgCtrl +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf import net.mamoe.mirai.message.data.MessageChain import net.mamoe.mirai.message.data.PttMessage import net.mamoe.mirai.message.data.firstOrNull -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.message.MessageSourceToFriendImpl -import net.mamoe.mirai.qqandroid.message.MessageSourceToGroupImpl -import net.mamoe.mirai.qqandroid.message.MessageSourceToTempImpl -import net.mamoe.mirai.qqandroid.message.toRichTextElems -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgComm -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgCtrl -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf import net.mamoe.mirai.utils.currentTimeSeconds import kotlin.contracts.InvocationKind import kotlin.contracts.contract diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt similarity index 73% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt index f8d663c49..120c311a8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushForceOffline.kt @@ -7,14 +7,14 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.io.core.ByteReadPacket import net.mamoe.mirai.event.events.BotOfflineEvent -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushForceOffline -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.utils.io.serialization.readUniPacket +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPushForceOffline +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt similarity index 75% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt index aba9e662a..479920c2c 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/MessageSvc.PushNotify.kt @@ -7,17 +7,17 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.atomicfu.loop import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.discardExact -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushNotify -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgSvc -import net.mamoe.mirai.qqandroid.network.protocol.packet.IncomingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.readUniPacket +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPushNotify +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgSvc +import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt similarity index 88% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt index c86400d4e..f47ff8393 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushGroupMsg.kt @@ -9,7 +9,7 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.io.core.ByteReadPacket import net.mamoe.mirai.contact.MemberPermission @@ -19,20 +19,20 @@ import net.mamoe.mirai.event.Event import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.MemberCardChangeEvent import net.mamoe.mirai.getGroupOrNull +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.contact.MemberImpl +import net.mamoe.mirai.internal.message.toMessageChain +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody +import net.mamoe.mirai.internal.network.protocol.data.proto.MsgOnlinePush +import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x8fc +import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.serialization.loadAs +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf import net.mamoe.mirai.message.GroupMessageEvent -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.contact.MemberImpl -import net.mamoe.mirai.qqandroid.message.toMessageChain -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.ImMsgBody -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.MsgOnlinePush -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Oidb0x8fc -import net.mamoe.mirai.qqandroid.network.protocol.packet.IncomingPacketFactory -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.loadAs -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf import net.mamoe.mirai.utils.warning /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt similarity index 92% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt index ffc1de153..809a01592 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.PbPushTransMsg.kt @@ -10,7 +10,7 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @file:OptIn(JavaFriendlyAPI::class) -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.coroutines.CancellationException import kotlinx.coroutines.cancel @@ -22,21 +22,21 @@ import net.mamoe.mirai.JavaFriendlyAPI import net.mamoe.mirai.contact.MemberPermission import net.mamoe.mirai.data.MemberInfo import net.mamoe.mirai.event.events.* -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.GroupImpl -import net.mamoe.mirai.qqandroid.contact.MemberImpl -import net.mamoe.mirai.qqandroid.contact.checkIsMemberImpl -import net.mamoe.mirai.qqandroid.message.contextualBugReportException -import net.mamoe.mirai.qqandroid.network.MultiPacketByIterable -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.OnlinePushTrans -import net.mamoe.mirai.qqandroid.network.protocol.packet.IncomingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildResponseUniPacket -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.read +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.GroupImpl +import net.mamoe.mirai.internal.contact.MemberImpl +import net.mamoe.mirai.internal.contact.checkIsMemberImpl +import net.mamoe.mirai.internal.message.contextualBugReportException +import net.mamoe.mirai.internal.network.MultiPacketByIterable +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.OnlinePushTrans +import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.read internal object OnlinePushPbPushTransMsg : diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt index e850ba189..8ed39980a 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.ReqPush.kt @@ -12,7 +12,7 @@ JavaFriendlyAPI::class ) -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.receive +package net.mamoe.mirai.internal.network.protocol.packet.chat.receive import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.discardExact @@ -27,31 +27,31 @@ import net.mamoe.mirai.data.FriendInfo import net.mamoe.mirai.event.events.* import net.mamoe.mirai.getFriendOrNull import net.mamoe.mirai.getGroupOrNull -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.contact.* -import net.mamoe.mirai.qqandroid.network.MultiPacketBySequence -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgInfo -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.MsgType0x210 -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.OnlinePushPack -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x115 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x122 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x27.SubMsgType0x27.* -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0x44.Submsgtype0x44 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Submsgtype0xb3 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.TroopTips0x857 -import net.mamoe.mirai.qqandroid.network.protocol.packet.IncomingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildResponseUniPacket -import net.mamoe.mirai.qqandroid.utils._miraiContentToString -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.readString -import net.mamoe.mirai.qqandroid.utils.io.serialization.* -import net.mamoe.mirai.qqandroid.utils.read -import net.mamoe.mirai.qqandroid.utils.toUHexString +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.contact.* +import net.mamoe.mirai.internal.network.MultiPacketBySequence +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.jce.MsgInfo +import net.mamoe.mirai.internal.network.protocol.data.jce.MsgType0x210 +import net.mamoe.mirai.internal.network.protocol.data.jce.OnlinePushPack +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x115 +import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x122 +import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x27.SubMsgType0x27.* +import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0x44.Submsgtype0x44 +import net.mamoe.mirai.internal.network.protocol.data.proto.Submsgtype0xb3 +import net.mamoe.mirai.internal.network.protocol.data.proto.TroopTips0x857 +import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket +import net.mamoe.mirai.internal.utils._miraiContentToString +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.readString +import net.mamoe.mirai.internal.utils.io.serialization.* +import net.mamoe.mirai.internal.utils.read +import net.mamoe.mirai.internal.utils.toUHexString import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.debug diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/voice/PttStore.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/voice/PttStore.kt similarity index 87% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/voice/PttStore.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/voice/PttStore.kt index eab0e436a..4cf3a62f9 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/chat/voice/PttStore.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/voice/PttStore.kt @@ -1,17 +1,17 @@ -package net.mamoe.mirai.qqandroid.network.protocol.packet.chat.voice +package net.mamoe.mirai.internal.network.protocol.packet.chat.voice import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Cmd0x388 -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf +import net.mamoe.mirai.internal.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.proto.Cmd0x388 +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.serialization.readProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.writeProtoBuf internal class PttStore { object GroupPttUp : OutgoingPacketFactory("PttStore.GroupPttUp") { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/FriendList.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/FriendList.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/FriendList.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/list/FriendList.kt index c21c75fe3..ef519e527 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/FriendList.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/FriendList.kt @@ -7,22 +7,22 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.list +package net.mamoe.mirai.internal.network.protocol.packet.list import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.* -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Vec0xd50 -import net.mamoe.mirai.qqandroid.network.protocol.packet.EMPTY_BYTE_ARRAY -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.jceRequestSBuffer -import net.mamoe.mirai.qqandroid.utils.io.serialization.readUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.toByteArray -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeJceStruct +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.jce.* +import net.mamoe.mirai.internal.network.protocol.data.proto.Vec0xd50 +import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.jceRequestSBuffer +import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.toByteArray +import net.mamoe.mirai.internal.utils.io.serialization.writeJceStruct internal class FriendList { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/ProfileService.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/ProfileService.kt similarity index 66% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/ProfileService.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/list/ProfileService.kt index a1bad3585..2c8858ca2 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/list/ProfileService.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/list/ProfileService.kt @@ -7,22 +7,22 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.list +package net.mamoe.mirai.internal.network.protocol.packet.list import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GroupMngReqJce -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.GroupMngRes -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.jceRequestSBuffer -import net.mamoe.mirai.qqandroid.utils.io.serialization.readUniPacket -import net.mamoe.mirai.qqandroid.utils.io.serialization.writeJceStruct -import net.mamoe.mirai.qqandroid.utils.toByteArray +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.data.jce.GroupMngReqJce +import net.mamoe.mirai.internal.network.protocol.data.jce.GroupMngRes +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.buildOutgoingUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.jceRequestSBuffer +import net.mamoe.mirai.internal.utils.io.serialization.readUniPacket +import net.mamoe.mirai.internal.utils.io.serialization.writeJceStruct +import net.mamoe.mirai.internal.utils.toByteArray internal class ProfileService { object GroupMngReq : OutgoingPacketFactory("ProfileService.GroupMngReq") { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/ConfigPushSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/ConfigPushSvc.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt index 7743d0f56..cc2473eb1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/ConfigPushSvc.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/ConfigPushSvc.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.login +package net.mamoe.mirai.internal.network.protocol.packet.login import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.use @@ -15,22 +15,22 @@ import kotlinx.serialization.Serializable import kotlinx.serialization.protobuf.ProtoNumber import net.mamoe.mirai.event.AbstractEvent import net.mamoe.mirai.event.Event -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.FileStoragePushFSSvcListFuckKotlin -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.PushResp -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.IncomingPacketFactory -import net.mamoe.mirai.qqandroid.network.protocol.packet.OutgoingPacket -import net.mamoe.mirai.qqandroid.network.protocol.packet.buildResponseUniPacket -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.hexToBytes -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.serialization.* -import net.mamoe.mirai.qqandroid.utils.io.withUse -import net.mamoe.mirai.qqandroid.utils.toReadPacket +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.protocol.data.jce.FileStoragePushFSSvcListFuckKotlin +import net.mamoe.mirai.internal.network.protocol.data.jce.PushResp +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory +import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket +import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket +import net.mamoe.mirai.internal.utils.ByteArrayPool +import net.mamoe.mirai.internal.utils.hexToBytes +import net.mamoe.mirai.internal.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.serialization.* +import net.mamoe.mirai.internal.utils.io.withUse +import net.mamoe.mirai.internal.utils.toReadPacket import net.mamoe.mirai.utils.verbose -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.PushReq as PushReqJceStruct +import net.mamoe.mirai.internal.network.protocol.data.jce.PushReq as PushReqJceStruct internal class ConfigPushSvc { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Heartbeat.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/Heartbeat.kt similarity index 79% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Heartbeat.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/login/Heartbeat.kt index cff8ba106..d155f7b87 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/Heartbeat.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/Heartbeat.kt @@ -7,13 +7,13 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.login +package net.mamoe.mirai.internal.network.protocol.packet.login import kotlinx.io.core.ByteReadPacket -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.protocol.packet.* +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.protocol.packet.* internal class Heartbeat { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/StatSvc.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/StatSvc.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt index 5df66dc25..4e045b184 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/StatSvc.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/StatSvc.kt @@ -7,27 +7,27 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.login +package net.mamoe.mirai.internal.network.protocol.packet.login import kotlinx.io.core.ByteReadPacket import kotlinx.serialization.protobuf.ProtoBuf import net.mamoe.mirai.event.events.BotOfflineEvent -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.Packet -import net.mamoe.mirai.qqandroid.network.QQAndroidClient -import net.mamoe.mirai.qqandroid.network.guid -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestMSFForceOffline -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RspMSFForceOffline -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.SvcReqRegister -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.Oidb0x769 -import net.mamoe.mirai.qqandroid.network.protocol.data.proto.StatSvcGetOnline -import net.mamoe.mirai.qqandroid.network.protocol.packet.* -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils -import net.mamoe.mirai.qqandroid.utils.NetworkType -import net.mamoe.mirai.qqandroid.utils.encodeToString -import net.mamoe.mirai.qqandroid.utils.io.serialization.* -import net.mamoe.mirai.qqandroid.utils.toReadPacket +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.Packet +import net.mamoe.mirai.internal.network.QQAndroidClient +import net.mamoe.mirai.internal.network.guid +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestMSFForceOffline +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.network.protocol.data.jce.RspMSFForceOffline +import net.mamoe.mirai.internal.network.protocol.data.jce.SvcReqRegister +import net.mamoe.mirai.internal.network.protocol.data.proto.Oidb0x769 +import net.mamoe.mirai.internal.network.protocol.data.proto.StatSvcGetOnline +import net.mamoe.mirai.internal.network.protocol.packet.* +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.NetworkType +import net.mamoe.mirai.internal.utils.encodeToString +import net.mamoe.mirai.internal.utils.io.serialization.* +import net.mamoe.mirai.internal.utils.toReadPacket @Suppress("EnumEntryName", "unused") internal enum class RegPushReason { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/WtLogin.kt b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/WtLogin.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/WtLogin.kt rename to mirai-core/src/commonMain/kotlin/network/protocol/packet/login/WtLogin.kt index 3d31b9e59..adaf4cf5e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/network/protocol/packet/login/WtLogin.kt +++ b/mirai-core/src/commonMain/kotlin/network/protocol/packet/login/WtLogin.kt @@ -7,18 +7,18 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.network.protocol.packet.login +package net.mamoe.mirai.internal.network.protocol.packet.login import kotlinx.io.core.* -import net.mamoe.mirai.qqandroid.QQAndroidBot -import net.mamoe.mirai.qqandroid.network.* -import net.mamoe.mirai.qqandroid.network.protocol.LoginType -import net.mamoe.mirai.qqandroid.network.protocol.packet.* -import net.mamoe.mirai.qqandroid.utils.* -import net.mamoe.mirai.qqandroid.utils.cryptor.TEA -import net.mamoe.mirai.qqandroid.utils.guidFlag -import net.mamoe.mirai.qqandroid.utils.io.* +import net.mamoe.mirai.internal.QQAndroidBot +import net.mamoe.mirai.internal.network.* +import net.mamoe.mirai.internal.network.protocol.LoginType +import net.mamoe.mirai.internal.network.protocol.packet.* +import net.mamoe.mirai.internal.utils.* +import net.mamoe.mirai.internal.utils.cryptor.TEA +import net.mamoe.mirai.internal.utils.guidFlag +import net.mamoe.mirai.internal.utils.io.* import net.mamoe.mirai.utils.currentTimeSeconds import net.mamoe.mirai.utils.error diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheList.kt b/mirai-core/src/commonMain/kotlin/utils/AtomicResizeCacheList.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheList.kt rename to mirai-core/src/commonMain/kotlin/utils/AtomicResizeCacheList.kt index 888371f49..9deb0a6be 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheList.kt +++ b/mirai-core/src/commonMain/kotlin/utils/AtomicResizeCacheList.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.atomicfu.AtomicLong import kotlinx.atomicfu.atomic diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/ByteArrayPool.kt b/mirai-core/src/commonMain/kotlin/utils/ByteArrayPool.kt similarity index 93% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/ByteArrayPool.kt rename to mirai-core/src/commonMain/kotlin/utils/ByteArrayPool.kt index e6455f4d4..8b1b136b8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/ByteArrayPool.kt +++ b/mirai-core/src/commonMain/kotlin/utils/ByteArrayPool.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.io.pool.ObjectPool diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/GuidSource.kt b/mirai-core/src/commonMain/kotlin/utils/GuidSource.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/GuidSource.kt rename to mirai-core/src/commonMain/kotlin/utils/GuidSource.kt index 9e268a2e6..3afd02b6d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/GuidSource.kt +++ b/mirai-core/src/commonMain/kotlin/utils/GuidSource.kt @@ -10,7 +10,7 @@ @file:JvmName("Utils") @file:JvmMultifileClass -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.common.kt b/mirai-core/src/commonMain/kotlin/utils/LinkedList.common.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.common.kt rename to mirai-core/src/commonMain/kotlin/utils/LinkedList.common.kt index fb869d01e..a7e069d2a 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/LinkedList.common.kt +++ b/mirai-core/src/commonMain/kotlin/utils/LinkedList.common.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils // We target JVM and Android only. internal expect class LinkedList() : List, Queue, Deque diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.common.kt b/mirai-core/src/commonMain/kotlin/utils/MiraiPlatformUtils.common.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.common.kt rename to mirai-core/src/commonMain/kotlin/utils/MiraiPlatformUtils.common.kt index 40634374a..7dcd6826d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.common.kt +++ b/mirai-core/src/commonMain/kotlin/utils/MiraiPlatformUtils.common.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import io.ktor.client.* diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/NetworkType.kt b/mirai-core/src/commonMain/kotlin/utils/NetworkType.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/NetworkType.kt rename to mirai-core/src/commonMain/kotlin/utils/NetworkType.kt index f8e39ee47..0e520fc8c 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/NetworkType.kt +++ b/mirai-core/src/commonMain/kotlin/utils/NetworkType.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils /** * 连接类型 diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.kt b/mirai-core/src/commonMain/kotlin/utils/PlatformDatagramChannel.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.kt rename to mirai-core/src/commonMain/kotlin/utils/PlatformDatagramChannel.kt index 4348b2a07..a4704bbe8 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformDatagramChannel.kt +++ b/mirai-core/src/commonMain/kotlin/utils/PlatformDatagramChannel.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.Closeable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt b/mirai-core/src/commonMain/kotlin/utils/PlatformSocket.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt rename to mirai-core/src/commonMain/kotlin/utils/PlatformSocket.kt index 834e8ab73..b5d90a02b 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt +++ b/mirai-core/src/commonMain/kotlin/utils/PlatformSocket.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.io.core.ByteReadPacket import kotlinx.io.core.Closeable diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt b/mirai-core/src/commonMain/kotlin/utils/byteArrays.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt rename to mirai-core/src/commonMain/kotlin/utils/byteArrays.kt index dc0586349..f0bdd7612 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/byteArrays.kt +++ b/mirai-core/src/commonMain/kotlin/utils/byteArrays.kt @@ -11,7 +11,7 @@ @file:JvmMultifileClass @file:JvmName("Utils") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.io.charsets.Charset import kotlinx.io.charsets.Charsets diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/contentToString.kt b/mirai-core/src/commonMain/kotlin/utils/contentToString.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/contentToString.kt rename to mirai-core/src/commonMain/kotlin/utils/contentToString.kt index 7969eea49..bb1ad1c7d 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/contentToString.kt +++ b/mirai-core/src/commonMain/kotlin/utils/contentToString.kt @@ -9,7 +9,7 @@ @file:Suppress("EXPERIMENTAL_API_USAGE", "unused", "NO_REFLECTION_IN_CLASS_PATH") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.serialization.Transient import net.mamoe.mirai.utils.DefaultLogger diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/conversion.kt b/mirai-core/src/commonMain/kotlin/utils/conversion.kt similarity index 99% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/conversion.kt rename to mirai-core/src/commonMain/kotlin/utils/conversion.kt index 57478676c..89467f4b4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/conversion.kt +++ b/mirai-core/src/commonMain/kotlin/utils/conversion.kt @@ -9,7 +9,7 @@ @file:Suppress("EXPERIMENTAL_UNSIGNED_LITERALS", "EXPERIMENTAL_API_USAGE", "unused") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils /* * 类型转换 Utils. diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDH.kt b/mirai-core/src/commonMain/kotlin/utils/cryptor/ECDH.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDH.kt rename to mirai-core/src/commonMain/kotlin/utils/cryptor/ECDH.kt index 4927d1fb8..c4dc7eecd 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDH.kt +++ b/mirai-core/src/commonMain/kotlin/utils/cryptor/ECDH.kt @@ -7,9 +7,9 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.cryptor +package net.mamoe.mirai.internal.utils.cryptor -import net.mamoe.mirai.qqandroid.utils.chunkedHexToBytes +import net.mamoe.mirai.internal.utils.chunkedHexToBytes internal expect interface ECDHPrivateKey { fun getEncoded(): ByteArray diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/TEA.kt b/mirai-core/src/commonMain/kotlin/utils/cryptor/TEA.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/TEA.kt rename to mirai-core/src/commonMain/kotlin/utils/cryptor/TEA.kt index 3d0d3ae32..01d646599 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/TEA.kt +++ b/mirai-core/src/commonMain/kotlin/utils/cryptor/TEA.kt @@ -7,13 +7,13 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.cryptor +package net.mamoe.mirai.internal.utils.cryptor import kotlinx.io.core.ByteReadPacket import kotlinx.io.pool.useInstance -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.toByteArray -import net.mamoe.mirai.qqandroid.utils.toUHexString +import net.mamoe.mirai.internal.utils.ByteArrayPool +import net.mamoe.mirai.internal.utils.toByteArray +import net.mamoe.mirai.internal.utils.toUHexString import kotlin.experimental.and import kotlin.experimental.xor import kotlin.jvm.JvmStatic diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/flags.kt b/mirai-core/src/commonMain/kotlin/utils/flags.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/flags.kt rename to mirai-core/src/commonMain/kotlin/utils/flags.kt index b8c9de84e..9802b1a59 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/flags.kt +++ b/mirai-core/src/commonMain/kotlin/utils/flags.kt @@ -10,7 +10,7 @@ @file:JvmName("Utils") @file:JvmMultifileClass -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/JceStruct.kt b/mirai-core/src/commonMain/kotlin/utils/io/JceStruct.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/JceStruct.kt rename to mirai-core/src/commonMain/kotlin/utils/io/JceStruct.kt index f08ffa06f..88a4362d0 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/JceStruct.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/JceStruct.kt @@ -7,6 +7,6 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io +package net.mamoe.mirai.internal.utils.io internal interface JceStruct \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/ProtoBuf.kt b/mirai-core/src/commonMain/kotlin/utils/io/ProtoBuf.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/ProtoBuf.kt rename to mirai-core/src/commonMain/kotlin/utils/io/ProtoBuf.kt index b2be70da0..6a4f94561 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/ProtoBuf.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/ProtoBuf.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io +package net.mamoe.mirai.internal.utils.io /** * 仅有标示作用 diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/input.kt b/mirai-core/src/commonMain/kotlin/utils/io/input.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/input.kt rename to mirai-core/src/commonMain/kotlin/utils/io/input.kt index f41e32151..c539ca818 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/input.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/input.kt @@ -11,14 +11,14 @@ @file:JvmMultifileClass @file:JvmName("Utils") -package net.mamoe.mirai.qqandroid.utils.io +package net.mamoe.mirai.internal.utils.io import kotlinx.io.charsets.Charset import kotlinx.io.charsets.Charsets import kotlinx.io.core.* -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.toReadPacket -import net.mamoe.mirai.qqandroid.utils.toUHexString +import net.mamoe.mirai.internal.utils.ByteArrayPool +import net.mamoe.mirai.internal.utils.toReadPacket +import net.mamoe.mirai.internal.utils.toUHexString import kotlin.contracts.InvocationKind import kotlin.contracts.contract import kotlin.jvm.JvmMultifileClass diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/output.kt b/mirai-core/src/commonMain/kotlin/utils/io/output.kt similarity index 94% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/output.kt rename to mirai-core/src/commonMain/kotlin/utils/io/output.kt index 9241893dd..ca8e07036 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/output.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/output.kt @@ -11,11 +11,11 @@ @file:JvmMultifileClass @file:JvmName("Utils") -package net.mamoe.mirai.qqandroid.utils.io +package net.mamoe.mirai.internal.utils.io import kotlinx.io.core.* -import net.mamoe.mirai.qqandroid.utils.coerceAtMostOrFail -import net.mamoe.mirai.qqandroid.utils.cryptor.TEA +import net.mamoe.mirai.internal.utils.coerceAtMostOrFail +import net.mamoe.mirai.internal.utils.cryptor.TEA import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/ProtoBufWithNullableSupport.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/ProtoBufWithNullableSupport.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/ProtoBufWithNullableSupport.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/ProtoBufWithNullableSupport.kt index e3d8ffa36..ef89b9a55 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/ProtoBufWithNullableSupport.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/ProtoBufWithNullableSupport.kt @@ -7,7 +7,7 @@ @file:Suppress("DEPRECATION_ERROR") -package net.mamoe.mirai.qqandroid.utils.io.serialization +package net.mamoe.mirai.internal.utils.io.serialization import kotlinx.serialization.* import kotlinx.serialization.builtins.ByteArraySerializer @@ -24,8 +24,8 @@ import kotlinx.serialization.modules.SerializersModule import kotlinx.serialization.protobuf.ProtoBuf import kotlinx.serialization.protobuf.ProtoIntegerType import kotlinx.serialization.protobuf.ProtoType -import net.mamoe.mirai.qqandroid.utils.io.serialization.ProtoBufWithNullableSupport.Varint.encodeVarint -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.serialization.ProtoBufWithNullableSupport.Varint.encodeVarint +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId import java.io.ByteArrayOutputStream import java.nio.ByteBuffer import java.nio.ByteOrder diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/Tars.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/Tars.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/Tars.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/Tars.kt index d807aea97..2e13cd405 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/Tars.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/Tars.kt @@ -9,7 +9,7 @@ @file:Suppress("MemberVisibilityCanBePrivate", "unused") -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars +package net.mamoe.mirai.internal.utils.io.serialization.tars import kotlinx.io.charsets.Charset import kotlinx.io.charsets.Charsets @@ -17,9 +17,9 @@ import kotlinx.io.core.* import kotlinx.serialization.* import kotlinx.serialization.modules.EmptySerializersModule import kotlinx.serialization.modules.SerializersModule -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsDecoder -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsInput -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal.TarsOld +import net.mamoe.mirai.internal.utils.io.serialization.tars.internal.TarsDecoder +import net.mamoe.mirai.internal.utils.io.serialization.tars.internal.TarsInput +import net.mamoe.mirai.internal.utils.io.serialization.tars.internal.TarsOld import kotlin.jvm.JvmStatic /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/TarsId.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/TarsId.kt similarity index 91% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/TarsId.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/TarsId.kt index c954a2d82..f8268aed1 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/TarsId.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/TarsId.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars +package net.mamoe.mirai.internal.utils.io.serialization.tars import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialInfo diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsDecoder.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsDecoder.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsDecoder.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsDecoder.kt index 79b3c4a53..bdec63ab4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsDecoder.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsDecoder.kt @@ -9,7 +9,7 @@ @file:Suppress("PrivatePropertyName") -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal +package net.mamoe.mirai.internal.utils.io.serialization.tars.internal import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.InternalSerializationApi @@ -18,8 +18,8 @@ import kotlinx.serialization.encoding.AbstractDecoder import kotlinx.serialization.encoding.CompositeDecoder import kotlinx.serialization.internal.TaggedDecoder import kotlinx.serialization.modules.SerializersModule -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId @OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class) diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsInput.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsInput.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsInput.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsInput.kt index ffd87070b..7317f5d90 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsInput.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsInput.kt @@ -7,11 +7,11 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal +package net.mamoe.mirai.internal.utils.io.serialization.tars.internal import kotlinx.io.charsets.Charset import kotlinx.io.core.* -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars /** diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsOld.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsOld.kt similarity index 89% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsOld.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsOld.kt index dabaf056c..337e8f57e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsOld.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsOld.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal +package net.mamoe.mirai.internal.utils.io.serialization.tars.internal import kotlinx.io.charsets.Charset import kotlinx.io.charsets.Charsets @@ -24,22 +24,22 @@ import kotlinx.serialization.internal.MapLikeSerializer import kotlinx.serialization.internal.TaggedEncoder import kotlinx.serialization.modules.EmptySerializersModule import kotlinx.serialization.modules.SerializersModule -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.BYTE -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.DOUBLE -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.FLOAT -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.INT -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.LIST -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.LONG -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.MAP -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.SHORT -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.SIMPLE_LIST -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRING1 -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRING4 -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRUCT_BEGIN -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.STRUCT_END -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.Tars_MAX_STRING_LENGTH -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars.Companion.ZERO_TYPE -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.TarsId +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.BYTE +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.DOUBLE +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.FLOAT +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.INT +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.LIST +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.LONG +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.MAP +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.SHORT +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.SIMPLE_LIST +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.STRING1 +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.STRING4 +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.STRUCT_BEGIN +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.STRUCT_END +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.Tars_MAX_STRING_LENGTH +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars.Companion.ZERO_TYPE +import net.mamoe.mirai.internal.utils.io.serialization.tars.TarsId @OptIn(ExperimentalSerializationApi::class) internal inline fun SerialDescriptor.findAnnotation(elementIndex: Int): A? { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsTag.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsTag.kt similarity index 95% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsTag.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsTag.kt index 17f2527ee..a5a7ff6f0 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/tars/internal/TarsTag.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/tars/internal/TarsTag.kt @@ -7,12 +7,12 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.io.serialization.tars.internal +package net.mamoe.mirai.internal.utils.io.serialization.tars.internal import kotlinx.io.core.Output import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.descriptors.SerialDescriptor -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars internal abstract class TarsTag { diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/utils.kt b/mirai-core/src/commonMain/kotlin/utils/io/serialization/utils.kt similarity index 90% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/utils.kt rename to mirai-core/src/commonMain/kotlin/utils/io/serialization/utils.kt index a9462735e..edf37132e 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/io/serialization/utils.kt +++ b/mirai-core/src/commonMain/kotlin/utils/io/serialization/utils.kt @@ -10,20 +10,20 @@ @file:JvmName("SerializationUtils") @file:JvmMultifileClass -package net.mamoe.mirai.qqandroid.utils.io.serialization +package net.mamoe.mirai.internal.utils.io.serialization import kotlinx.io.core.* import kotlinx.serialization.DeserializationStrategy import kotlinx.serialization.SerializationStrategy import kotlinx.serialization.descriptors.SerialDescriptor -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestDataVersion2 -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestDataVersion3 -import net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPacket -import net.mamoe.mirai.qqandroid.utils.io.JceStruct -import net.mamoe.mirai.qqandroid.utils.io.ProtoBuf -import net.mamoe.mirai.qqandroid.utils.io.readPacketExact -import net.mamoe.mirai.qqandroid.utils.io.serialization.tars.Tars -import net.mamoe.mirai.qqandroid.utils.read +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestDataVersion2 +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestDataVersion3 +import net.mamoe.mirai.internal.network.protocol.data.jce.RequestPacket +import net.mamoe.mirai.internal.utils.io.JceStruct +import net.mamoe.mirai.internal.utils.io.ProtoBuf +import net.mamoe.mirai.internal.utils.io.readPacketExact +import net.mamoe.mirai.internal.utils.io.serialization.tars.Tars +import net.mamoe.mirai.internal.utils.read import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/numbers.kt b/mirai-core/src/commonMain/kotlin/utils/numbers.kt similarity index 96% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/numbers.kt rename to mirai-core/src/commonMain/kotlin/utils/numbers.kt index 18c81b5ab..d34bef4a4 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/numbers.kt +++ b/mirai-core/src/commonMain/kotlin/utils/numbers.kt @@ -10,7 +10,7 @@ @file:JvmMultifileClass @file:JvmName("Utils") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/tryNTimes.kt b/mirai-core/src/commonMain/kotlin/utils/tryNTimes.kt similarity index 97% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/tryNTimes.kt rename to mirai-core/src/commonMain/kotlin/utils/tryNTimes.kt index 772b73187..7fd6d05a2 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/tryNTimes.kt +++ b/mirai-core/src/commonMain/kotlin/utils/tryNTimes.kt @@ -12,7 +12,7 @@ @file:JvmMultifileClass @file:JvmName("Utils") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlin.jvm.JvmMultifileClass import kotlin.jvm.JvmName diff --git a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt b/mirai-core/src/commonMain/kotlin/utils/type.kt similarity index 98% rename from mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt rename to mirai-core/src/commonMain/kotlin/utils/type.kt index 16cf73835..ef98579a7 100644 --- a/mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/utils/type.kt +++ b/mirai-core/src/commonMain/kotlin/utils/type.kt @@ -10,7 +10,7 @@ @file:JvmName("Utils") @file:JvmMultifileClass -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import net.mamoe.mirai.message.data.* import net.mamoe.mirai.message.data.AtAll.display diff --git a/mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/PlatformUtilsTest.kt b/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt similarity index 95% rename from mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/PlatformUtilsTest.kt rename to mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt index bf8daa258..8787af920 100644 --- a/mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/PlatformUtilsTest.kt +++ b/mirai-core/src/commonTest/kotlin/PlatformUtilsTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.io.core.toByteArray import kotlin.test.Test diff --git a/mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/TypeConversionTest.kt b/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt similarity index 96% rename from mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/TypeConversionTest.kt rename to mirai-core/src/commonTest/kotlin/TypeConversionTest.kt index 0e3e75805..2b383c996 100644 --- a/mirai-core-qqandroid/src/commonTest/kotlin/net.mamoe.mirai.qqandroid/utils/TypeConversionTest.kt +++ b/mirai-core/src/commonTest/kotlin/TypeConversionTest.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlin.test.Test import kotlin.test.assertEquals diff --git a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/ExternalImageTest.kt b/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/ExternalImageTest.kt deleted file mode 100644 index 04888bb88..000000000 --- a/mirai-core/src/commonTest/kotlin/net/mamoe/mirai/utils/ExternalImageTest.kt +++ /dev/null @@ -1,14 +0,0 @@ -package net.mamoe.mirai.utils - -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class ExternalImageTest { - - @Test - fun testByteArrayGet() { - assertEquals("0F", byteArrayOf(0x0f)[0, 0]) - assertEquals("10", byteArrayOf(0x10)[0, 0]) - assertEquals("0FFE", byteArrayOf(0x0F, 0xFE.toByte())[0, 1]) - } -} \ No newline at end of file diff --git a/mirai-core-qqandroid/src/commonTest/kotlin/samples/CustomMessageSamples.kt b/mirai-core/src/commonTest/kotlin/samples/CustomMessageSamples.kt similarity index 100% rename from mirai-core-qqandroid/src/commonTest/kotlin/samples/CustomMessageSamples.kt rename to mirai-core/src/commonTest/kotlin/samples/CustomMessageSamples.kt diff --git a/mirai-core-qqandroid/src/commonTest/kotlin/test/printing.kt b/mirai-core/src/commonTest/kotlin/test/printing.kt similarity index 91% rename from mirai-core-qqandroid/src/commonTest/kotlin/test/printing.kt rename to mirai-core/src/commonTest/kotlin/test/printing.kt index efeef9bf3..63f3c05e0 100644 --- a/mirai-core-qqandroid/src/commonTest/kotlin/test/printing.kt +++ b/mirai-core/src/commonTest/kotlin/test/printing.kt @@ -16,9 +16,9 @@ import kotlinx.io.core.Input import kotlinx.io.core.readAvailable import kotlinx.io.core.use import kotlinx.io.pool.useInstance -import net.mamoe.mirai.qqandroid.utils.ByteArrayPool -import net.mamoe.mirai.qqandroid.utils.toReadPacket -import net.mamoe.mirai.qqandroid.utils.toUHexString +import net.mamoe.mirai.internal.utils.ByteArrayPool +import net.mamoe.mirai.internal.utils.toReadPacket +import net.mamoe.mirai.internal.utils.toUHexString import net.mamoe.mirai.utils.DefaultLogger import net.mamoe.mirai.utils.MiraiLoggerWithSwitch import net.mamoe.mirai.utils.withSwitch diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt b/mirai-core/src/jvmMain/kotlin/QQAndroid.kt similarity index 96% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt rename to mirai-core/src/jvmMain/kotlin/QQAndroid.kt index 8d6117362..d798e4d71 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroid.kt +++ b/mirai-core/src/jvmMain/kotlin/QQAndroid.kt @@ -6,14 +6,13 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - @file:Suppress("FunctionName", "OverridingDeprecatedMember") -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import net.mamoe.mirai.Bot import net.mamoe.mirai.BotFactory -import net.mamoe.mirai.qqandroid.QQAndroid.Bot +import net.mamoe.mirai.internal.QQAndroid.Bot import net.mamoe.mirai.utils.BotConfiguration import net.mamoe.mirai.utils.Context diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.jvm.kt b/mirai-core/src/jvmMain/kotlin/QQAndroidBot.jvm.kt similarity index 95% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.jvm.kt rename to mirai-core/src/jvmMain/kotlin/QQAndroidBot.jvm.kt index c814c4713..2d2610f14 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/QQAndroidBot.jvm.kt +++ b/mirai-core/src/jvmMain/kotlin/QQAndroidBot.jvm.kt @@ -6,8 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ - -package net.mamoe.mirai.qqandroid +package net.mamoe.mirai.internal import net.mamoe.mirai.utils.BotConfiguration import net.mamoe.mirai.utils.ContextImpl diff --git a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.android.kt b/mirai-core/src/jvmMain/kotlin/utils/LinkedList.kt similarity index 71% rename from mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.android.kt rename to mirai-core/src/jvmMain/kotlin/utils/LinkedList.kt index 3c0eb2e70..c0cc2637e 100644 --- a/mirai-core/src/androidMain/kotlin/net/mamoe/mirai/utils/Context.android.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/LinkedList.kt @@ -6,7 +6,9 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ +package net.mamoe.mirai.internal.utils -package net.mamoe.mirai.utils +import java.util.LinkedList -actual typealias Context = android.content.Context \ No newline at end of file +@Suppress("ACTUAL_WITHOUT_EXPECT") +internal actual typealias LinkedList = LinkedList \ No newline at end of file diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt b/mirai-core/src/jvmMain/kotlin/utils/MiraiPlatformUtils.kt similarity index 98% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt rename to mirai-core/src/jvmMain/kotlin/utils/MiraiPlatformUtils.kt index 96cc7f423..cb48a01e7 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/MiraiPlatformUtils.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/MiraiPlatformUtils.kt @@ -9,7 +9,7 @@ @file:Suppress("NOTHING_TO_INLINE") -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import io.ktor.client.* import io.ktor.client.engine.cio.* diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt b/mirai-core/src/jvmMain/kotlin/utils/PlatformSocket.kt similarity index 98% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt rename to mirai-core/src/jvmMain/kotlin/utils/PlatformSocket.kt index 78a9ca73f..7b0a82250 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocket.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/PlatformSocket.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.suspendCancellableCoroutine @@ -112,7 +112,7 @@ internal actual typealias SocketException = SocketException * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import io.ktor.network.selector.ActorSelectorManager import io.ktor.network.sockets.* @@ -126,7 +126,7 @@ import kotlinx.io.core.Closeable import kotlinx.io.core.ExperimentalIoApi import kotlinx.io.core.buildPacket import kotlinx.io.errors.IOException -import net.mamoe.mirai.qqandroid.utils.io.useBytes +import useBytes import java.net.InetSocketAddress import java.net.SocketException import kotlin.coroutines.CoroutineContext diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocketJvm.kt b/mirai-core/src/jvmMain/kotlin/utils/PlatformSocketJvm.kt similarity index 98% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocketJvm.kt rename to mirai-core/src/jvmMain/kotlin/utils/PlatformSocketJvm.kt index a6a8e5404..fc51d9817 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/PlatformSocketJvm.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/PlatformSocketJvm.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt b/mirai-core/src/jvmMain/kotlin/utils/addSuppressedMirai.kt similarity index 93% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt rename to mirai-core/src/jvmMain/kotlin/utils/addSuppressedMirai.kt index e68c3e23d..c21ab4440 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/addSuppressedMirai.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/addSuppressedMirai.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils @PublishedApi internal actual fun Throwable.addSuppressedMirai(e: Throwable) { diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHJvm.kt b/mirai-core/src/jvmMain/kotlin/utils/cryptor/ECDHJvm.kt similarity index 96% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHJvm.kt rename to mirai-core/src/jvmMain/kotlin/utils/cryptor/ECDHJvm.kt index 0a0a0ca52..8e307762b 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/cryptor/ECDHJvm.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/cryptor/ECDHJvm.kt @@ -7,9 +7,9 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils.cryptor +package net.mamoe.mirai.internal.utils.cryptor -import net.mamoe.mirai.qqandroid.utils.MiraiPlatformUtils +import net.mamoe.mirai.internal.utils.MiraiPlatformUtils import org.bouncycastle.jce.provider.BouncyCastleProvider import java.security.* import java.security.spec.ECGenParameterSpec diff --git a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt b/mirai-core/src/jvmMain/kotlin/utils/setVisible.kt similarity index 96% rename from mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt rename to mirai-core/src/jvmMain/kotlin/utils/setVisible.kt index 3e61d3761..741d9252c 100644 --- a/mirai-core-qqandroid/src/jvmMain/kotlin/net/mamoe/mirai/qqandroid/utils/setVisible.kt +++ b/mirai-core/src/jvmMain/kotlin/utils/setVisible.kt @@ -7,7 +7,7 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils +package net.mamoe.mirai.internal.utils import java.lang.reflect.Modifier import kotlin.reflect.KProperty diff --git a/java-test/src/test/java/net/mamoe/mirai/javatest/SimpleListenerHostTest.java b/mirai-core/src/jvmTest/java/SimpleListenerHostTest.java similarity index 100% rename from java-test/src/test/java/net/mamoe/mirai/javatest/SimpleListenerHostTest.java rename to mirai-core/src/jvmTest/java/SimpleListenerHostTest.java diff --git a/mirai-core-qqandroid/src/jvmTest/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheListTest.kt b/mirai-core/src/jvmTest/kotlin/AtomicResizeCacheListTest.kt similarity index 96% rename from mirai-core-qqandroid/src/jvmTest/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheListTest.kt rename to mirai-core/src/jvmTest/kotlin/AtomicResizeCacheListTest.kt index 7ebbdfc6a..8fe377528 100644 --- a/mirai-core-qqandroid/src/jvmTest/kotlin/net/mamoe/mirai/qqandroid/utils/AtomicResizeCacheListTest.kt +++ b/mirai-core/src/jvmTest/kotlin/AtomicResizeCacheListTest.kt @@ -7,8 +7,6 @@ * https://github.com/mamoe/mirai/blob/master/LICENSE */ -package net.mamoe.mirai.qqandroid.utils - /* internal class AtomicResizeCacheListTest { diff --git a/mirai-core/src/main/AndroidManifest.xml b/mirai-core/src/main/AndroidManifest.xml index 544a92e64..b1d2174fb 100644 --- a/mirai-core/src/main/AndroidManifest.xml +++ b/mirai-core/src/main/AndroidManifest.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/mirai-serialization/README.md b/mirai-serialization/README.md deleted file mode 100644 index bb1a7ed6c..000000000 --- a/mirai-serialization/README.md +++ /dev/null @@ -1,78 +0,0 @@ -# mirai-serialization - -mirai-core 的序列化支持模块. 提供 `Message` 类型的序列化支持与相关 [mirai 码](../docs/mirai-code-specification.md) 支持. - -- 状态: 在 `1.1.0` 起为实验性 -- 版本: 自 mirai-core `1.1.0` 起随 mirai-core 以同版本号发布 - -## 依赖配置 - -### Maven - -```xml - - - jcenter - https://jcenter.bintray.com/ - - -``` - -```xml - - - net.mamoe - mirai-serialization - 0.23.0 - - -``` - -### Gradle (推荐) - -```kotlin -repositories{ - jcenter() -} -``` - -#### Java / Kotlin JVM: -- Android: -**注意**: 在 [KT-37152](https://youtrack.jetbrains.com/issue/KT-37152) 修复前, mirai 无法支持 Android 平台目标, 请使用普通 JVM. -```kotlin -implementation("net.mamoe:mirai-serialization-android:VERSION") -``` -- 其他 JVM: -```kotlin -implementation("net.mamoe:mirai-serialization:VERSION") -``` - -#### Kotlin Multi-platform: -**注意**: 在 [KT-37152](https://youtrack.jetbrains.com/issue/KT-37152) 修复前, mirai 无法支持 Android 平台目标, 请使用普通 JVM. -```kotlin -implementation("net.mamoe:mirai-serialization:VERSION") // jvm -implementation("net.mamoe:mirai-serialization-common:VERSION") // common -implementation("net.mamoe:mirai-serialization-android:VERSION") // android -``` - - -## 使用 - -本模块包含两部分功能, 'mirai 码' 和 '序列化' - -### mirai 码 -- 状态: 在 `1.1.0` 实现, 处于实验性阶段 - -- [mirai 码规范](../docs/mirai-code-specification.md) - -#### 将消息转换为 mirai 码 -实现了 [CodableMessage](../mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/CodableMessage.kt#L36) 接口的 [Message](../mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Message.kt#L78) 支持转换为 mirai 码表示. - -[`CodableMessage.toMiraiCode(): String`](../mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/code/CodableMessage.kt#L43) - -#### 将 mirai 码转换为消息 -[`fun String.parseMiraiCode(): MessageChain`](../mirai-serialization/src/commonMain/kotlin/net/mamoe/mirai/message/code/MiraiCode.kt#L26) - -### 序列化 -- 状态: 待实现 -- 相关 issue: [#219](https://github.com/mamoe/mirai/issues/219), [#201](https://github.com/mamoe/mirai/issues/219) diff --git a/mirai-serialization/build.gradle.kts b/mirai-serialization/build.gradle.kts deleted file mode 100644 index d7c28a645..000000000 --- a/mirai-serialization/build.gradle.kts +++ /dev/null @@ -1,97 +0,0 @@ -@file:Suppress("UNUSED_VARIABLE") - -plugins { - kotlin("multiplatform") - id("kotlinx-atomicfu") - kotlin("plugin.serialization") - id("signing") - `maven-publish` - id("com.jfrog.bintray") -} - -description = "Mirai serialization module" - -val isAndroidSDKAvailable: Boolean by project - -kotlin { - explicitApi() - - if (isAndroidSDKAvailable) { - apply(from = rootProject.file("gradle/android.gradle")) - android("android") { - publishAllLibraryVariants() - } - } else { - println( - """Android SDK 可能未安装. - $name 的 Android 目标编译将不会进行. - 这不会影响 Android 以外的平台的编译. - """.trimIndent() - ) - println( - """Android SDK might not be installed. - Android target of $name will not be compiled. - It does no influence on the compilation of other platforms. - """.trimIndent() - ) - } - - jvm() - - sourceSets.apply { - all { - languageSettings.enableLanguageFeature("InlineClasses") - languageSettings.useExperimentalAnnotation("kotlin.Experimental") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiInternalAPI") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiExperimentalAPI") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.LowLevelAPI") - languageSettings.useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes") - languageSettings.useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference") - languageSettings.useExperimentalAnnotation("kotlin.time.ExperimentalTime") - languageSettings.useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts") - - languageSettings.progressiveMode = true - } - - val commonMain by getting { - dependencies { - api(project(":mirai-core")) - } - } - val commonTest by getting { - dependencies { - api(kotlin("test-annotations-common")) - api(kotlin("test-common")) - } - } - - if (isAndroidSDKAvailable) { - val androidMain by getting { - dependencies { - } - } - - val androidTest by getting { - dependencies { - } - } - } - - val jvmMain by getting { - dependencies { - runtimeOnly(files("build/classes/kotlin/jvm/main")) // classpath is not properly set by IDE - } - } - - val jvmTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-junit")) - - runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE - } - } - } -} - -apply(from = rootProject.file("gradle/publish.gradle")) diff --git a/mirai-serialization/src/commonTest/kotlin/net/mamoe/mirai/message/code/MiraiCodeParserTest.kt b/mirai-serialization/src/commonTest/kotlin/net/mamoe/mirai/message/code/MiraiCodeParserTest.kt deleted file mode 100644 index 59d3bd04d..000000000 --- a/mirai-serialization/src/commonTest/kotlin/net/mamoe/mirai/message/code/MiraiCodeParserTest.kt +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") - -package net.mamoe.mirai.message.code - -import net.mamoe.mirai.message.data.* -import net.mamoe.mirai.message.data.VipFace.Companion.AiXin -import kotlin.test.Test -import kotlin.test.assertEquals - -internal class MiraiCodeParserTest { - - @Test - fun testSplit() { - val str = "sadvass][ [mirai:at:1,test]]vdsavs [mirai:atall]" - assertEquals(str, str.parseMiraiCode().toString()) - } - - @Test - fun testAfter() { - val str = "sadvass][ [mirai:at:1,test]]vdsavs [mirai:atall]last" - val parse = str.parseMiraiCode() - assertEquals(str, parse.toString()) - assertEquals("last", (parse.last() as? PlainText)?.content) - } - - @Test - fun testBefore() { - val str = "sadvass][ [mirai:at:1,test]]vdsavs [mirai:atall]last" - val parse = str.parseMiraiCode() - assertEquals(str, parse.toString()) - assertEquals("sadvass][ ", (parse.first() as? PlainText)?.content) - } - - @Test - fun at() { - val str = "[mirai:at:1,test]" - assertEquals(At._lowLevelConstructAtInstance(1, "test"), str.parseMiraiCode()[0]) - - fun testPlain(str: String) { - assertEquals(str, (str.parseMiraiCode()[0] as PlainText).content) - } - testPlain("[mirai:at:bad,test]") - testPlain("[mirai:at:bad]") - testPlain("[mirai:at:]") - testPlain("[mirai:at]") - } - - @Test - fun atAll() { - val str = "[mirai:atall]" - assertEquals(AtAll, str.parseMiraiCode()[0]) - } - - @Test - fun poke() { - assertEquals(PokeMessage.Poke, PokeMessage.Poke.toString().parseMiraiCode()[0]) - } - - @Test - fun vipFace() { - val instance = VipFace(AiXin, 1) - assertEquals(instance, instance.toString().parseMiraiCode()[0]) - } - - @Test - fun image() { - val instance = Image("{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.mirai") - assertEquals(instance, instance.toString().parseMiraiCode()[0]) - } - - @Test - fun flash() { - val instance = Image("{01E9451B-70ED-EAE3-B37C-101F1EEBF5B5}.mirai").flash() - assertEquals(instance, instance.toString().parseMiraiCode()[0]) - } -} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 2745d3c68..000000000 --- a/settings.gradle +++ /dev/null @@ -1,36 +0,0 @@ -pluginManagement { - resolutionStrategy { - eachPlugin { - switch (requested.id.id) { - case "org.jetbrains.kotlin.multiplatform": useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}"); break - case "com.android.library": useModule("com.android.tools.build:gradle:${requested.version}"); break - case "com.jfrog.bintray": useModule("com.jfrog.bintray.gradle:gradle-bintray-plugin:${requested.version}") - } - } - } - - repositories { - mavenLocal() - gradlePluginPortal() - jcenter() - google() - mavenCentral() - maven { url "https://plugins.gradle.org/m2/" } - maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" } - maven { url "https://kotlin.bintray.com/kotlinx" } - } -} - -rootProject.name = 'mirai' - -include(':mirai-core') -include(':mirai-core-qqandroid') -include(':mirai-serialization') -include(':mirai-core-all') -include(':java-test') - -//include(':compatibility-validator') // THIS WILL CAUSE A DEPENDENCY RESOLUTION BUG -//include(':java-compatibility-validator') - -// include(':mirai-api-http') -enableFeaturePreview('GRADLE_METADATA') \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 000000000..fb3abcb78 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,17 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + mavenCentral() + jcenter() + google() + maven(url = "https://dl.bintray.com/jetbrains/kotlin-native-dependencies") + maven(url = "https://kotlin.bintray.com/kotlinx") + } +} + +rootProject.name = "mirai" + +include(":mirai-core-api") +include(":mirai-core") +include(":mirai-core-all") \ No newline at end of file From 80722aaea73d072a6c749a0fd1c1b3bbbb8232e0 Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 3 Oct 2020 13:35:05 +0800 Subject: [PATCH 09/11] Pretty buildscript --- build.gradle.kts | 429 ++++++++---------- buildSrc/src/main/kotlin/PublishingHelpers.kt | 4 +- buildSrc/src/main/kotlin/Versions.kt | 83 ++-- buildSrc/src/main/kotlin/upload/CuiCloud.kt | 175 ------- buildSrc/src/main/kotlin/upload/GitHub.kt | 211 --------- java-test/build.gradle.kts | 22 - mirai-core-all/build.gradle.kts | 33 +- mirai-core-api/build.gradle.kts | 89 ++-- .../src/commonMain/kotlin/BotFactory.kt | 1 + mirai-core/build.gradle.kts | 55 ++- 10 files changed, 316 insertions(+), 786 deletions(-) delete mode 100644 buildSrc/src/main/kotlin/upload/CuiCloud.kt delete mode 100644 buildSrc/src/main/kotlin/upload/GitHub.kt delete mode 100644 java-test/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index 87422303c..042bf4cf0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,33 +2,35 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.jetbrains.dokka.gradle.DokkaTask -import java.time.Duration -import kotlin.math.pow +import org.jetbrains.kotlin.gradle.dsl.* +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.utils.addToStdlib.safeAs buildscript { repositories { mavenLocal() // maven(url = "https://mirrors.huaweicloud.com/repository/maven") - maven(url = "https://dl.bintray.com/kotlin/kotlin-eap") - maven(url = "https://kotlin.bintray.com/kotlinx") + mavenCentral() jcenter() google() - mavenCentral() + maven(url = "https://dl.bintray.com/kotlin/kotlin-eap") + maven(url = "https://kotlin.bintray.com/kotlinx") } dependencies { - classpath("com.android.tools.build:gradle:${Versions.Android.androidGradlePlugin}") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.Kotlin.compiler}") - classpath("org.jetbrains.kotlin:kotlin-serialization:${Versions.Kotlin.compiler}") - classpath("org.jetbrains.kotlinx:atomicfu-gradle-plugin:${Versions.Kotlin.atomicFU}") - classpath("org.jetbrains.kotlinx:binary-compatibility-validator:${Versions.Kotlin.binaryValidator}") + classpath("com.android.tools.build:gradle:${Versions.androidGradlePlugin}") + classpath("org.jetbrains.kotlinx:atomicfu-gradle-plugin:${Versions.atomicFU}") + classpath("org.jetbrains.kotlinx:binary-compatibility-validator:${Versions.binaryValidator}") } } plugins { - id("org.jetbrains.dokka") version Versions.Kotlin.dokka apply false + kotlin("jvm") version Versions.kotlinCompiler + kotlin("plugin.serialization") version Versions.kotlinCompiler + id("org.jetbrains.dokka") version Versions.dokka apply false id("net.mamoe.kotlin-jvm-blocking-bridge") version Versions.blockingBridge apply false - id("com.jfrog.bintray") version Versions.Publishing.bintray + id("com.jfrog.bintray") version Versions.bintray } // https://github.com/kotlin/binary-compatibility-validator @@ -57,7 +59,7 @@ runCatching { allprojects { group = "net.mamoe" - version = Versions.Mirai.version + version = Versions.project repositories { mavenLocal() @@ -68,225 +70,143 @@ allprojects { google() mavenCentral() } -} - -subprojects { - if (this@subprojects.name == "java-test") { - return@subprojects - } afterEvaluate { - if (name == "mirai-core-all") { - return@afterEvaluate + configureJvmTarget() + configureMppShadow() + configureEncoding() + configureKotlinTestSettings() + configureKotlinCompilerSettings() + configureKotlinExperimentalUsages() + + if (isKotlinJvmProject) { + configureFlattenSourceSets() } - apply(plugin = "com.github.johnrengelman.shadow") - val kotlin = - runCatching { - (this as ExtensionAware).extensions.getByName("kotlin") as? org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension - }.getOrNull() ?: return@afterEvaluate + configureDokka() + } +} - val shadowJvmJar by tasks.creating(ShadowJar::class) sd@{ - - group = "mirai" - archiveClassifier.set("-all") - - val compilations = - kotlin.targets.filter { it.platformType == org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.jvm } - .map { it.compilations["main"] } - - compilations.forEach { - dependsOn(it.compileKotlinTask) - from(it.output) +fun Project.configureDokka() { + apply(plugin = "org.jetbrains.dokka") + tasks { + val dokka by getting(DokkaTask::class) { + outputFormat = "html" + outputDirectory = "$buildDir/dokka" + } + val dokkaMarkdown by creating(DokkaTask::class) { + outputFormat = "markdown" + outputDirectory = "$buildDir/dokka-markdown" + } + val dokkaGfm by creating(DokkaTask::class) { + outputFormat = "gfm" + outputDirectory = "$buildDir/dokka-gfm" + } + } + for (task in tasks.filterIsInstance()) { + task.configuration { + perPackageOption { + prefix = "net.mamoe.mirai" + skipDeprecated = true } - - println(project.configurations.joinToString()) - - from(project.configurations.getByName("jvmRuntimeClasspath")) - - this.exclude { file -> - file.name.endsWith(".sf", ignoreCase = true) + for (suppressedPackage in arrayOf( + "net.mamoe.mirai.internal", + "net.mamoe.mirai.event.internal", + "net.mamoe.mirai.utils.internal", + "net.mamoe.mirai.internal" + )) { + perPackageOption { + prefix = suppressedPackage + suppress = true + } } + } + } +} - this.manifest { - this.attributes( - "Manifest-Version" to 1, - "Implementation-Vendor" to "Mamoe Technologies", - "Implementation-Title" to this@afterEvaluate.name.toString(), - "Implementation-Version" to this@afterEvaluate.version.toString() - ) - } +@Suppress("NOTHING_TO_INLINE") // or error +fun Project.configureJvmTarget() { + tasks.withType(KotlinJvmCompile::class.java) { + kotlinOptions.jvmTarget = "11" + } + + extensions.findByType(JavaPluginExtension::class.java)?.run { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } +} + +fun Project.configureMppShadow() { + val kotlin = + runCatching { + (this as ExtensionAware).extensions.getByName("kotlin") as? KotlinMultiplatformExtension + }.getOrNull() ?: return + + val shadowJvmJar by tasks.creating(ShadowJar::class) sd@{ + group = "mirai" + archiveClassifier.set("-all") + + val compilations = + kotlin.targets.filter { it.platformType == KotlinPlatformType.jvm } + .map { it.compilations["main"] } + + compilations.forEach { + dependsOn(it.compileKotlinTask) + from(it.output) + } + + println(project.configurations.joinToString()) + + from(project.configurations.getByName("jvmRuntimeClasspath")) + + this.exclude { file -> + file.name.endsWith(".sf", ignoreCase = true) } /* - val shadowJarMd5 = tasks.register("shadowJarMd5") { - dependsOn("shadowJvmJar") - - val outFiles = shadowJvmJar.outputs.files.associateWith { file -> - File(file.parentFile, file.name.removeSuffix(".jar").removeSuffix("-all") + "-all.jar.md5") - } - - outFiles.forEach { (_, output) -> - outputs.files(output) - } - - doLast { - for ((origin, output) in outFiles) { - output - .also { it.createNewFile() } - .writeText(origin.inputStream().md5().toUHexString("").trim(Char::isWhitespace)) - } - } - - tasks.getByName("publish").dependsOn(this) - tasks.getByName("bintrayUpload").dependsOn(this) - }.get() - */ - - val githubUpload by tasks.creating { - group = "mirai" - dependsOn(shadowJvmJar) - - doFirst { - timeout.set(Duration.ofHours(3)) - findLatestFile().let { (_, file) -> - val filename = file.name - println("Uploading file $filename") - runCatching { - upload.GitHub.upload( - file, - project, - "mirai-repo", - "shadow/${project.name}/$filename" - ) - }.exceptionOrNull()?.let { - System.err.println("GitHub Upload failed") - it.printStackTrace() // force show stacktrace - throw it - } - runCatching { - upload.GitHub.upload( - file.inputStream().use { upload.GitHub.run { it.md5().hex().toByteArray(Charsets.UTF_8) } }, - project, - "mirai-repo", - "shadow/${project.name}/$filename.md5" - ) - }.exceptionOrNull()?.let { - System.err.println("GitHub Upload failed") - it.printStackTrace() // force show stacktrace - throw it - } - } - } - } - - apply(plugin = "org.jetbrains.dokka") - this.tasks { - val dokka by getting(DokkaTask::class) { - outputFormat = "html" - outputDirectory = "$buildDir/dokka" - } - val dokkaMarkdown by creating(DokkaTask::class) { - outputFormat = "markdown" - outputDirectory = "$buildDir/dokka-markdown" - } - val dokkaGfm by creating(DokkaTask::class) { - outputFormat = "gfm" - outputDirectory = "$buildDir/dokka-gfm" - } - } - - val dokkaGitHubUpload by tasks.creating { - group = "mirai" - - val dokkaTaskName = "dokka" - - dependsOn(tasks.getByName(dokkaTaskName)) - doFirst { - val baseDir = file("./build/$dokkaTaskName/${project.name}") - - timeout.set(Duration.ofHours(6)) - file("build/$dokkaTaskName/").walk() - .filter { it.isFile } - .map { old -> - if (old.name == "index.md") File(old.parentFile, "README.md").also { new -> old.renameTo(new) } - else old - } - // optimize md - .forEach { file -> - if (file.endsWith(".md")) { - file.writeText( - file.readText().replace("index.md", "README.md", ignoreCase = true) - .replace(Regex("""```\n([\s\S]*?)```""")) { - "\n" + """ - ```kotlin - $it - ``` - """.trimIndent() - }) - } /* else if (file.name == "README.md") { - file.writeText(file.readText().replace(Regex("""(\n\n\|\s)""")) { - "\n\n" + """" - ||| - |:----------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| - | - """.trimIndent() - }) - }*/ - val filename = file.toRelativeString(baseDir) - println("Uploading file $filename") - runCatching { - upload.GitHub.upload( - file, - project, - "mirai-doc", - "${project.name}/${project.version}/$filename" - ) - }.exceptionOrNull()?.let { - System.err.println("GitHub Upload failed") - it.printStackTrace() // force show stacktrace - throw it - } - } - } - } + this.manifest { + this.attributes( + "Manifest-Version" to 1, + "Implementation-Vendor" to "Mamoe Technologies", + "Implementation-Title" to this.name.toString(), + "Implementation-Version" to this.version.toString() + ) + }*/ } +} - afterEvaluate { - tasks.filterIsInstance().forEach { task -> - with(task) { - configuration { - perPackageOption { - prefix = "net.mamoe.mirai" - skipDeprecated = true +fun Project.configureEncoding() { + tasks.withType(JavaCompile::class.java) { + options.encoding = "UTF8" + } +} + +fun Project.configureKotlinTestSettings() { + tasks.withType(Test::class) { + useJUnitPlatform() + } + when { + isKotlinJvmProject -> { + dependencies { + testImplementation(kotlin("test-junit5")) + + testApi("org.junit.jupiter:junit-jupiter-api:5.2.0") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.2.0") + } + } + isKotlinMpp -> { + kotlinSourceSets?.forEach { sourceSet -> + if (sourceSet.name == "common") { + sourceSet.dependencies { + implementation(kotlin("test")) + implementation(kotlin("test-annotations-common")) } - perPackageOption { - prefix = "net.mamoe.mirai.internal" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.event.internal" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.utils.internal" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.internal.utils" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.internal.contact" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.internal.message" - suppress = true - } - perPackageOption { - prefix = "net.mamoe.mirai.internal.network" - suppress = true + } else { + sourceSet.dependencies { + implementation(kotlin("test-junit5")) + + implementation("org.junit.jupiter:junit-jupiter-api:5.2.0") + implementation("org.junit.jupiter:junit-jupiter-engine:5.2.0") } } } @@ -294,21 +214,60 @@ subprojects { } } - -fun Project.findLatestFile(): Map.Entry { - return File(projectDir, "build/libs").walk() - .filter { it.isFile } - .onEach { println("all files=$it") } - .filter { it.name.matches(Regex("""${project.name}-[0-9][0-9]*(\.[0-9]*)*.*\.jar""")) } - .onEach { println("matched file: ${it.name}") } - .associateBy { it.nameWithoutExtension.substringAfterLast('-') } - .onEach { println("versions: $it") } - .maxBy { (version, _) -> - version.split('.').let { - if (it.size == 2) it + "0" - else it - }.reversed().foldIndexed(0) { index: Int, acc: Int, s: String -> - acc + 100.0.pow(index).toInt() * (s.toIntOrNull() ?: 0) - } - } ?: error("cannot find any file to upload") +fun Project.configureKotlinCompilerSettings() { + val kotlinCompilations = kotlinCompilations ?: return + for (kotlinCompilation in kotlinCompilations) with(kotlinCompilation) { + if (isKotlinJvmProject) { + @Suppress("UNCHECKED_CAST") + this as KotlinCompilation + } + kotlinOptions.freeCompilerArgs += "-Xjvm-default=all" + } } + +val experimentalAnnotations = arrayOf( + "kotlin.RequiresOptIn", + "kotlin.contracts.ExperimentalContracts", + "kotlin.experimental.ExperimentalTypeInference", + "net.mamoe.mirai.utils.MiraiInternalAPI", + "net.mamoe.mirai.utils.MiraiExperimentalAPI", + "net.mamoe.mirai.LowLevelAPI" +) + +fun Project.configureKotlinExperimentalUsages() { + val sourceSets = kotlinSourceSets ?: return + + for (target in sourceSets) { + experimentalAnnotations.forEach { a -> + target.languageSettings.useExperimentalAnnotation(a) + target.languageSettings.progressiveMode = true + target.languageSettings.enableLanguageFeature("InlineClasses") + } + } +} + +fun Project.configureFlattenSourceSets() { + sourceSets { + findByName("main")?.apply { + resources.setSrcDirs(listOf(projectDir.resolve("resources"))) + java.setSrcDirs(listOf(projectDir.resolve("src"))) + } + findByName("test")?.apply { + resources.setSrcDirs(listOf(projectDir.resolve("resources"))) + java.setSrcDirs(listOf(projectDir.resolve("test"))) + } + } +} + +val Project.kotlinSourceSets get() = extensions.findByName("kotlin").safeAs()?.sourceSets + +val Project.kotlinTargets + get() = + extensions.findByName("kotlin").safeAs()?.target?.let { listOf(it) } + ?: extensions.findByName("kotlin").safeAs()?.targets + +val Project.isKotlinJvmProject: Boolean get() = extensions.findByName("kotlin") is KotlinJvmProjectExtension +val Project.isKotlinMpp: Boolean get() = extensions.findByName("kotlin") is KotlinMultiplatformExtension + +val Project.kotlinCompilations + get() = kotlinTargets?.flatMap { it.compilations } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/PublishingHelpers.kt b/buildSrc/src/main/kotlin/PublishingHelpers.kt index ed44db5c8..515327531 100644 --- a/buildSrc/src/main/kotlin/PublishingHelpers.kt +++ b/buildSrc/src/main/kotlin/PublishingHelpers.kt @@ -1,7 +1,6 @@ @file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "NOTHING_TO_INLINE", "RemoveRedundantBackticks") import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.publish.maven.MavenPublication @@ -9,7 +8,6 @@ import org.gradle.api.tasks.TaskContainer import org.gradle.api.tasks.bundling.Jar import org.gradle.kotlin.dsl.* import upload.Bintray -import java.io.File import java.util.* import kotlin.reflect.KProperty @@ -54,7 +52,7 @@ internal fun org.gradle.api.Project.`publishing`(configure: org.gradle.api.publi (this as org.gradle.api.plugins.ExtensionAware).extensions.configure("publishing", configure) -inline fun Project.setupPublishing( +inline fun Project.configurePublishing( artifactId: String, bintrayRepo: String = "mirai", bintrayPkgName: String = artifactId, diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index c847df1d7..911c2ce0d 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,49 +1,64 @@ +@file:Suppress("ObjectPropertyName", "ObjectPropertyName", "unused") /* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ +* Copyright 2019-2020 Mamoe Technologies and contributors. +* +* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. +* Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. +* +* https://github.com/mamoe/mirai/blob/master/LICENSE +*/ object Versions { - object Mirai { - const val version = "2.0-M1" - } + const val project = "2.0-M1" - object Kotlin { - const val compiler = "1.4.10" - const val stdlib = "1.4.10" - const val coroutines = "1.3.9" - const val atomicFU = "0.14.4" - const val serialization = "1.0.0-RC" - const val ktor = "1.4.0" - const val binaryValidator = "0.2.3" + const val kotlinCompiler = "1.4.10" + const val kotlinStdlib = "1.4.10" + const val coroutines = "1.3.9" + const val atomicFU = "0.14.4" + const val serialization = "1.0.0-RC" + const val ktor = "1.4.1" - const val io = "0.1.16" - const val coroutinesIo = "0.1.16" - const val dokka = "0.10.1" - } + const val binaryValidator = "0.2.3" - val blockingBridge = "1.1.0" + const val io = "0.1.16" + const val coroutinesIo = "0.1.16" + const val dokka = "0.10.1" - object Android { - const val androidGradlePlugin = "3.5.3" - } + const val blockingBridge = "1.1.0" - object Publishing { - const val bintray = "1.8.5" - } + const val androidGradlePlugin = "3.5.3" - object Logging { - const val slf4j = "1.7.30" - const val log4j = "2.13.3" - } + const val bintray = "1.8.5" + + const val slf4j = "1.7.30" + const val log4j = "2.13.3" } @Suppress("unused") fun kotlinx(id: String, version: String) = "org.jetbrains.kotlinx:kotlinx-$id:$version" @Suppress("unused") -fun ktor(id: String, version: String = Versions.Kotlin.ktor) = "io.ktor:ktor-$id:$version" +fun ktor(id: String, version: String = Versions.ktor) = "io.ktor:ktor-$id:$version" + + +val `kotlinx-coroutines-core` = kotlinx("coroutines-core", Versions.coroutines) +val `kotlinx-serialization-core` = kotlinx("serialization-core", Versions.serialization) +val `kotlinx-serialization-json` = kotlinx("serialization-json", Versions.serialization) +val `kotlinx-serialization-protobuf` = kotlinx("serialization-protobuf", Versions.serialization) +const val `kotlinx-atomicfu` = "org.jetbrains.kotlinx:atomicfu:${Versions.atomicFU}" +val `kotlinx-io` = kotlinx("io", Versions.io) +val `kotlinx-io-jvm` = kotlinx("io-jvm", Versions.io) +val `kotlinx-coroutines-io` = kotlinx("coroutines-io", Versions.coroutinesIo) +val `kotlinx-coroutines-io-jvm` = kotlinx("coroutines-io-jvm", Versions.coroutinesIo) + +val `ktor-serialization` = ktor("serialization", Versions.ktor) + +val `ktor-client-core` = ktor("client-core", Versions.ktor) +val `ktor-client-cio` = ktor("client-cio", Versions.ktor) +val `ktor-client-android` = ktor("client-android", Versions.ktor) +val `ktor-network` = ktor("network", Versions.ktor) +val `ktor-client-okhttp` = ktor("client-okhttp", Versions.ktor) +val `ktor-client-serialization-jvm` = ktor("client-serialization-jvm", Versions.ktor) + +const val slf4j = "org.slf4j:slf4j-api:" + Versions.slf4j +const val `log4j-api` = "org.apache.logging.log4j:log4j-api:" + Versions.log4j \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/upload/CuiCloud.kt b/buildSrc/src/main/kotlin/upload/CuiCloud.kt deleted file mode 100644 index 8b46101e7..000000000 --- a/buildSrc/src/main/kotlin/upload/CuiCloud.kt +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -package upload - -import io.ktor.client.request.* -import io.ktor.client.request.forms.* -import io.ktor.client.statement.* -import io.ktor.http.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.withContext -import org.gradle.api.Project -import org.gradle.kotlin.dsl.provideDelegate -import java.io.File -import java.util.* -import kotlin.contracts.ExperimentalContracts -import kotlin.contracts.InvocationKind -import kotlin.contracts.contract - -@Suppress("DEPRECATION") -object CuiCloud { - private fun getUrl(project: Project): String { - kotlin.runCatching { - @Suppress("UNUSED_VARIABLE", "LocalVariableName") - val cui_cloud_url: String by project - return cui_cloud_url - } - - System.getProperty("cui_cloud_url", null)?.let { - return it.trim() - } - File(File(System.getProperty("user.dir")).parent, "/cuiUrl.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - - File(File(System.getProperty("user.dir")), "/cuiUrl.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - error("cannot find url for CuiCloud") - } - - private fun getKey(project: Project): String { - kotlin.runCatching { - @Suppress("UNUSED_VARIABLE", "LocalVariableName") - val cui_cloud_key: String by project - return cui_cloud_key - } - - System.getProperty("cui_cloud_key", null)?.let { - return it.trim() - } - File(File(System.getProperty("user.dir")).parent, "/cuiToken.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - - File(File(System.getProperty("user.dir")), "/cuiToken.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - - error("cannot find key for CuiCloud") - } - - fun upload(file: File, project: Project) { - val cuiCloudUrl = getUrl(project) - val key = getKey(project) - - - val bytes = file.readBytes() - - runBlocking { - var first = true - retryCatching(1000) { - if (!first) { - println() - println() - println("Upload failed. Waiting 15s") - delay(15_000) - } - first = false - uploadToCuiCloud( - cuiCloudUrl, - key, - "/mirai/${project.name}/${file.nameWithoutExtension}.mp4", - bytes - ) - }.getOrThrow() - } - } - - @UseExperimental(ExperimentalStdlibApi::class) - private suspend fun uploadToCuiCloud( - cuiCloudUrl: String, - cuiToken: String, - filePath: String, - content: ByteArray - ) { - println("filePath=$filePath") - println("content=${content.size / 1024 / 1024} MB") - - val response = withContext(Dispatchers.IO) { - Http.post(cuiCloudUrl) { - body = MultiPartFormDataContent( - formData { - append("base64", Base64.getEncoder().encodeToString(content)) - append("filePath", filePath) - append("large", "true") - append("key", cuiToken) - } - ) - } - } - println(response.status) - - val buffer = ByteArray(4096) - val resp = buildList { - while (true) { - val read = response.content.readAvailable(buffer, 0, buffer.size) - if (read == -1) { - break - } - addAll(buffer.toList().take(read)) - } - } - println(String(resp.toByteArray())) - - if (!response.status.isSuccess()) { - error("Cui cloud response: ${response.status}") - } - } -} - - -@OptIn(ExperimentalContracts::class) -@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE", "RESULT_CLASS_IN_RETURN_TYPE") -@kotlin.internal.InlineOnly -internal inline fun retryCatching(n: Int, onFailure: () -> Unit = {}, block: () -> R): Result { - contract { - callsInPlace(block, InvocationKind.AT_LEAST_ONCE) - } - require(n >= 0) { "param n for retryCatching must not be negative" } - var exception: Throwable? = null - repeat(n) { - try { - return Result.success(block()) - } catch (e: Throwable) { - try { - exception?.addSuppressed(e) - } catch (e: Throwable) { - } - exception = e - onFailure() - } - } - return Result.failure(exception!!) -} - -inline fun buildList(builderAction: MutableList.() -> Unit): List { - return ArrayList().apply(builderAction) -} diff --git a/buildSrc/src/main/kotlin/upload/GitHub.kt b/buildSrc/src/main/kotlin/upload/GitHub.kt deleted file mode 100644 index ace819be9..000000000 --- a/buildSrc/src/main/kotlin/upload/GitHub.kt +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright 2019-2020 Mamoe Technologies and contributors. - * - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AFFERO GENERAL PUBLIC LICENSE version 3 license that can be found via the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - -@file:Suppress("EXPERIMENTAL_API_USAGE") - -package upload - -import com.google.gson.JsonObject -import com.google.gson.JsonParser -import io.ktor.client.* -import io.ktor.client.engine.cio.* -import io.ktor.client.features.* -import io.ktor.client.request.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.withContext -import org.gradle.api.Project -import org.gradle.kotlin.dsl.provideDelegate -import org.jsoup.Connection -import org.jsoup.Jsoup -import java.io.File -import java.util.* - -internal val Http = HttpClient(CIO) { - engine { - requestTimeout = 600_000 - } - install(HttpTimeout) { - socketTimeoutMillis = 600_000 - requestTimeoutMillis = 600_000 - connectTimeoutMillis = 600_000 - } -} - -object GitHub { - - private fun getGithubToken(project: Project): String { - kotlin.runCatching { - @Suppress("UNUSED_VARIABLE", "LocalVariableName") - val github_token: String by project - return github_token - } - - System.getProperty("github_token", null)?.let { - return it.trim() - } - - File(File(System.getProperty("user.dir")).parent, "/token.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - - File(File(System.getProperty("user.dir")), "/token.txt").let { local -> - if (local.exists()) { - return local.readText().trim() - } - } - - error( - "Cannot find github token, " + - "please specify by creating a file token.txt in project dir, " + - "or by providing JVM parameter 'github_token'" - ) - } - - fun ByteArray.hex(): String = buildString(size * 2) { - this@hex.forEach { byte -> - val uint = Integer.toHexString(byte.toInt() and 0xFF) - if (uint.length == 1) append('0') - append(uint) - } - } - - fun upload(file: File, project: Project, repo: String, targetFilePath: String) = upload( - file.readBytes(), project, repo, targetFilePath - ) - - fun upload(source: ByteArray, project: Project, repo: String, targetFilePath: String) = runBlocking { - val token = getGithubToken(project) - println("token.length=${token.length}") - val url = "https://api.github.com/repos/project-mirai/$repo/contents/$targetFilePath" - retryCatching(100, onFailure = { delay(30_000) }) { // 403 forbidden? - Http.put("$url?access_token=$token") { - val sha = retryCatching(3, onFailure = { delay(30_000) }) { - getGithubSha( - repo, - targetFilePath, - "master", - project - ) - }.getOrNull() - println("sha=$sha") - val content = String(Base64.getEncoder().encode(source)) - body = """ - { - "message": "Automatically upload on release ${project.name}:${project.version}", - "content": "$content" - ${if (sha == null) "" else """, "sha": "$sha" """} - } - """.trimIndent() - }.let { - println("Upload response: $it") - } - delay(1000) - }.getOrThrow() - } - - - private suspend fun getGithubSha( - repo: String, - filePath: String, - branch: String, - project: Project - ): String? { - fun String.asJson(): JsonObject { - return JsonParser.parseString(this).asJsonObject - } - - /* - * 只能获取1M以内/branch为master的sha - * */ - class TargetTooLargeException : Exception("Target TOO Large") - - suspend fun getShaSmart(repo: String, filePath: String, project: Project): String? { - return withContext(Dispatchers.IO) { - val response = Jsoup - .connect( - "https://api.github.com/repos/project-mirai/$repo/contents/$filePath?access_token=" + getGithubToken( - project - ) - ) - .ignoreContentType(true) - .ignoreHttpErrors(true) - .method(Connection.Method.GET) - .execute() - if (response.statusCode() == 404) { - null - } else { - val p = response.body().asJson() - if (p.has("message") && p["message"].asString == "This API returns blobs up to 1 MB in size. The requested blob is too large to fetch via the API, but you can use the Git Data API to request blobs up to 100 MB in size.") { - throw TargetTooLargeException() - } - p.get("sha").asString - } - } - } - - suspend fun getShaStupid( - repo: String, - filePath: String, - branch: String, - project: Project - ): String? { - val resp = withContext(Dispatchers.IO) { - Jsoup - .connect( - "https://api.github.com/repos/project-mirai/$repo/git/ref/heads/$branch?access_token=" + getGithubToken( - project - ) - ) - .ignoreContentType(true) - .ignoreHttpErrors(true) - .method(Connection.Method.GET) - .execute() - } - if (resp.statusCode() == 404) { - println("Branch Not Found") - return null - } - val info = resp.body().asJson().get("object").asJsonObject.get("url").asString - var parentNode = withContext(Dispatchers.IO) { - Jsoup.connect(info + "?access_token=" + getGithubToken(project)).ignoreContentType(true) - .method(Connection.Method.GET) - .execute().body().asJson().get("tree").asJsonObject.get("url").asString - } - filePath.split("/").forEach { subPath -> - withContext(Dispatchers.IO) { - Jsoup.connect(parentNode + "?access_token=" + getGithubToken(project)).ignoreContentType(true) - .method(Connection.Method.GET).execute().body().asJson().get("tree").asJsonArray - }.forEach list@{ - with(it.asJsonObject) { - if (this.get("path").asString == subPath) { - parentNode = this.get("url").asString - return@list - } - } - } - } - check(parentNode.contains("/blobs/")) - return parentNode.substringAfterLast("/") - } - - return if (branch == "master") { - try { - getShaSmart(repo, filePath, project) - } catch (e: TargetTooLargeException) { - getShaStupid(repo, filePath, branch, project) - } - } else { - getShaStupid(repo, filePath, branch, project) - } - } -} \ No newline at end of file diff --git a/java-test/build.gradle.kts b/java-test/build.gradle.kts deleted file mode 100644 index 3cb966ef9..000000000 --- a/java-test/build.gradle.kts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2020 Mamoe Technologies and contributors. - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. - * - * https://github.com/mamoe/mirai/blob/master/LICENSE - */ - - -plugins { - java -} - - -dependencies { - - implementation(project(":mirai-core")) - - implementation(project(":mirai-serialization")) - - testImplementation(group = "junit", name = "junit", version = "4.12") -} diff --git a/mirai-core-all/build.gradle.kts b/mirai-core-all/build.gradle.kts index d396a559c..51c5e2bab 100644 --- a/mirai-core-all/build.gradle.kts +++ b/mirai-core-all/build.gradle.kts @@ -9,7 +9,7 @@ plugins { id("net.mamoe.kotlin-jvm-blocking-bridge") } -version = Versions.Mirai.version +version = Versions.project description = "Mirai core shadowed" java { @@ -22,34 +22,7 @@ tasks.withType(JavaCompile::class.java) { } kotlin { - explicitApiWarning() - - sourceSets.all { - target.compilations.all { - kotlinOptions { - jvmTarget = "1.8" - freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all" - //useIR = true - } - } - languageSettings.apply { - enableLanguageFeature("InlineClasses") - progressiveMode = true - - useExperimentalAnnotation("kotlin.Experimental") - useExperimentalAnnotation("kotlin.RequiresOptIn") - - useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiInternalAPI") - useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiExperimentalAPI") - useExperimentalAnnotation("net.mamoe.mirai.console.ConsoleFrontEndImplementation") - useExperimentalAnnotation("net.mamoe.mirai.console.util.ConsoleExperimentalApi") - useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes") - useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference") - useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts") - useExperimentalAnnotation("kotlinx.serialization.ExperimentalSerializationApi") - useExperimentalAnnotation("net.mamoe.mirai.console.util.ConsoleInternalApi") - } - } + explicitApi() } dependencies { @@ -57,4 +30,4 @@ dependencies { api(project(":mirai-core-api")) } -setupPublishing("mirai-core-all") \ No newline at end of file +configurePublishing("mirai-core-all") \ No newline at end of file diff --git a/mirai-core-api/build.gradle.kts b/mirai-core-api/build.gradle.kts index a27495b7a..3eaf02f2b 100644 --- a/mirai-core-api/build.gradle.kts +++ b/mirai-core-api/build.gradle.kts @@ -38,70 +38,38 @@ kotlin { } jvm { - // withJava() // https://youtrack.jetbrains.com/issue/KT-39991 + withJava() } - sourceSets.apply { - all { - languageSettings.enableLanguageFeature("InlineClasses") - languageSettings.useExperimentalAnnotation("kotlin.Experimental") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiInternalAPI") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiExperimentalAPI") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.LowLevelAPI") - languageSettings.useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes") - languageSettings.useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference") - languageSettings.useExperimentalAnnotation("kotlin.time.ExperimentalTime") - languageSettings.useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts") - languageSettings.useExperimentalAnnotation("kotlinx.serialization.ExperimentalSerializationApi") - languageSettings.useExperimentalAnnotation("net.mamoe.mirai.utils.UnstableExternalImage") - - languageSettings.progressiveMode = true - } - + sourceSets { val commonMain by getting { dependencies { api(kotlin("serialization")) api(kotlin("reflect")) - api1(kotlinx("serialization-core", Versions.Kotlin.serialization)) - implementation1(kotlinx("serialization-protobuf", Versions.Kotlin.serialization)) - api1(kotlinx("io", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) - api(kotlinx("coroutines-core", Versions.Kotlin.coroutines)) + api1(`kotlinx-serialization-core`) + implementation1(`kotlinx-serialization-protobuf`) + api1(`kotlinx-io`) + api1(`kotlinx-coroutines-io`) + api(`kotlinx-coroutines-core`) - implementation1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") + implementation1(`kotlinx-atomicfu`) - api1(ktor("client-cio")) - api1(ktor("client-core")) - api1(ktor("network")) - } - } - - commonTest { - dependencies { - implementation(kotlin("test-annotations-common")) - implementation(kotlin("test-common")) + api1(`ktor-client-cio`) + api1(`ktor-client-core`) + api1(`ktor-network`) } } if (isAndroidSDKAvailable) { - val androidMain by getting { + androidMain { dependencies { api(kotlin("reflect")) - api1(kotlinx("io-jvm", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) + api1(`kotlinx-io-jvm`) + api1(`kotlinx-coroutines-io-jvm`) - api1(ktor("client-android", Versions.Kotlin.ktor)) - } - } - - val androidTest by getting { - dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-junit")) - implementation(kotlin("test-annotations-common")) - implementation(kotlin("test-common")) + api1(`ktor-client-android`) } } } @@ -109,20 +77,17 @@ kotlin { val jvmMain by getting { dependencies { api(kotlin("reflect")) - compileOnly("org.apache.logging.log4j:log4j-api:" + Versions.Logging.log4j) - compileOnly("org.slf4j:slf4j-api:" + Versions.Logging.slf4j) + compileOnly(`log4j-api`) + compileOnly(slf4j) - api1(ktor("client-core-jvm", Versions.Kotlin.ktor)) - api1(kotlinx("io-jvm", Versions.Kotlin.io)) - api1(kotlinx("coroutines-io-jvm", Versions.Kotlin.coroutinesIo)) + api1(`kotlinx-io-jvm`) + api1(`kotlinx-coroutines-io-jvm`) } } val jvmTest by getting { dependencies { - implementation(kotlin("test")) - implementation(kotlin("test-junit")) - implementation("org.pcap4j:pcap4j-distribution:1.8.2") + api("org.pcap4j:pcap4j-distribution:1.8.2") runtimeOnly(files("build/classes/kotlin/jvm/test")) // classpath is not properly set by IDE } @@ -130,6 +95,20 @@ kotlin { } } +val NamedDomainObjectContainer.androidMain: NamedDomainObjectProvider + get() = named("androidMain") + +val NamedDomainObjectContainer.androidTest: NamedDomainObjectProvider + get() = named("androidTest") + + +val NamedDomainObjectContainer.jvmMain: NamedDomainObjectProvider + get() = named("jvmMain") + +val NamedDomainObjectContainer.jvmTest: NamedDomainObjectProvider + get() = named("jvmTest") + + fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) = implementation(dependencyNotation) { exclude("org.jetbrains.kotlin", "kotlin-stdlib") diff --git a/mirai-core-api/src/commonMain/kotlin/BotFactory.kt b/mirai-core-api/src/commonMain/kotlin/BotFactory.kt index 0dcfe01dc..bd4dde5e8 100644 --- a/mirai-core-api/src/commonMain/kotlin/BotFactory.kt +++ b/mirai-core-api/src/commonMain/kotlin/BotFactory.kt @@ -6,6 +6,7 @@ * * https://github.com/mamoe/mirai/blob/master/LICENSE */ + @file:Suppress("FunctionName", "INAPPLICABLE_JVM_NAME", "DEPRECATION_ERROR", "DeprecatedCallableAddReplaceWith") package net.mamoe.mirai diff --git a/mirai-core/build.gradle.kts b/mirai-core/build.gradle.kts index 342b7b2ce..54738eb40 100644 --- a/mirai-core/build.gradle.kts +++ b/mirai-core/build.gradle.kts @@ -1,5 +1,7 @@ @file:Suppress("UNUSED_VARIABLE") +import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet + plugins { kotlin("multiplatform") id("kotlinx-atomicfu") @@ -60,60 +62,71 @@ kotlin { } } - val commonMain by getting { + commonMain { dependencies { - api1(kotlinx("serialization-core", Versions.Kotlin.serialization)) - api(kotlinx("coroutines-core", Versions.Kotlin.coroutines)) - implementation1(kotlinx("serialization-protobuf", Versions.Kotlin.serialization)) - api1("org.jetbrains.kotlinx:atomicfu:${Versions.Kotlin.atomicFU}") - api1(kotlinx("io", Versions.Kotlin.io)) - implementation1(kotlinx("coroutines-io", Versions.Kotlin.coroutinesIo)) + api1(`kotlinx-serialization-core`) + implementation1(`kotlinx-serialization-protobuf`) + + api1(`kotlinx-atomicfu`) + api1(`kotlinx-coroutines-core`) + + api1(`kotlinx-io`) + implementation1(`kotlinx-coroutines-io`) } } - val commonTest by getting { + commonTest { dependencies { - implementation(kotlin("test-annotations-common")) - implementation(kotlin("test-common")) implementation(kotlin("script-runtime")) } } if (isAndroidSDKAvailable) { - val androidMain by getting { + androidMain { dependencies { } } - val androidTest by getting { + androidTest { dependencies { - implementation(kotlin("test", Versions.Kotlin.compiler)) - implementation(kotlin("test-junit", Versions.Kotlin.compiler)) + implementation(kotlin("test", Versions.kotlinCompiler)) + implementation(kotlin("test-junit", Versions.kotlinCompiler)) implementation(kotlin("test-annotations-common")) implementation(kotlin("test-common")) } } } - val jvmMain by getting { + jvmMain { dependencies { implementation("org.bouncycastle:bcprov-jdk15on:1.64") - api1(kotlinx("io-jvm", Versions.Kotlin.io)) - // api(kotlinx("coroutines-debug", Versions.Kotlin.coroutines)) + api1(`kotlinx-io-jvm`) + // api(kotlinx("coroutines-debug", Versions.coroutines)) } } - val jvmTest by getting { + jvmTest { dependencies { - dependsOn(commonTest) - implementation(kotlin("test", Versions.Kotlin.compiler)) - implementation(kotlin("test-junit", Versions.Kotlin.compiler)) implementation("org.pcap4j:pcap4j-distribution:1.8.2") } } } } +val NamedDomainObjectContainer.androidMain: NamedDomainObjectProvider + get() = named("androidMain") + +val NamedDomainObjectContainer.androidTest: NamedDomainObjectProvider + get() = named("androidTest") + + +val NamedDomainObjectContainer.jvmMain: NamedDomainObjectProvider + get() = named("jvmMain") + +val NamedDomainObjectContainer.jvmTest: NamedDomainObjectProvider + get() = named("jvmTest") + + fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) = implementation(dependencyNotation) { exclude("org.jetbrains.kotlin", "kotlin-stdlib") From 0d96ea53d070bb9a3b96b2389b162b3725df8e7d Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 3 Oct 2020 13:44:19 +0800 Subject: [PATCH 10/11] Fix build --- build.gradle.kts | 3 ++- .../src/commonMain/kotlin/contact/Exceptions.kt | 2 ++ .../commonMain/kotlin/message/data/CustomMessage.kt | 1 + .../mamoe/mirai/event/JvmMethodEventsTestJava.java | 2 +- .../src/jvmTest/kotlin/event/CancelScopeTest.kt | 2 +- .../src/jvmTest/kotlin/event/JvmMethodEventsTest.kt | 2 +- .../jvmTest/kotlin/utils/LockFreeLinkedListTest.kt | 1 + .../mirai/javatest}/SimpleListenerHostTest.java | 13 ++++++++----- 8 files changed, 17 insertions(+), 9 deletions(-) rename mirai-core/src/jvmTest/java/{ => net/mamoe/mirai/javatest}/SimpleListenerHostTest.java (71%) diff --git a/build.gradle.kts b/build.gradle.kts index 042bf4cf0..a53b0fb23 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -231,7 +231,8 @@ val experimentalAnnotations = arrayOf( "kotlin.experimental.ExperimentalTypeInference", "net.mamoe.mirai.utils.MiraiInternalAPI", "net.mamoe.mirai.utils.MiraiExperimentalAPI", - "net.mamoe.mirai.LowLevelAPI" + "net.mamoe.mirai.LowLevelAPI", + "kotlinx.serialization.ExperimentalSerializationApi" ) fun Project.configureKotlinExperimentalUsages() { diff --git a/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt b/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt index 989462056..2388674c2 100644 --- a/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt +++ b/mirai-core-api/src/commonMain/kotlin/contact/Exceptions.kt @@ -13,6 +13,7 @@ package net.mamoe.mirai.contact import net.mamoe.mirai.message.data.Message import net.mamoe.mirai.utils.asHumanReadable +import kotlin.time.ExperimentalTime import kotlin.time.seconds /** @@ -38,6 +39,7 @@ public class MessageTooLargeException( * * @see Group.sendMessage */ +@OptIn(ExperimentalTime::class) public class BotIsBeingMutedException( public val target: Group ) : RuntimeException("bot is being muted, remaining ${target.botMuteRemaining.seconds.asHumanReadable} seconds") diff --git a/mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt b/mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt index fb416cecb..cd8856442 100644 --- a/mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt +++ b/mirai-core-api/src/commonMain/kotlin/message/data/CustomMessage.kt @@ -209,6 +209,7 @@ internal inline fun T.customToStringImpl(factory: Cu return (factory as CustomMessage.Factory).dump(this) } +@OptIn(ExperimentalUnsignedTypes::class) @JvmOverloads @Suppress("DuplicatedCode") // false positive. foreach is not common to UByteArray and ByteArray internal fun ByteArray.toUHexString( diff --git a/mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java b/mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java index 9f7e0a1e5..3cd8058fa 100644 --- a/mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java +++ b/mirai-core-api/src/jvmTest/java/net/mamoe/mirai/event/JvmMethodEventsTestJava.java @@ -9,7 +9,7 @@ package net.mamoe.mirai.event; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.atomic.AtomicInteger; diff --git a/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt b/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt index 949a59b19..05c97841c 100644 --- a/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/event/CancelScopeTest.kt @@ -11,7 +11,7 @@ package net.mamoe.mirai.event import kotlinx.coroutines.* import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.subscribeAlways -import org.junit.Test +import org.junit.jupiter.api.Test import kotlin.test.assertFalse diff --git a/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt index d53a8cd24..30a917590 100644 --- a/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/event/JvmMethodEventsTest.kt @@ -14,7 +14,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.runBlocking import net.mamoe.mirai.event.* import org.jetbrains.annotations.NotNull -import org.junit.Test +import org.junit.jupiter.api.Test import java.util.concurrent.atomic.AtomicInteger import kotlin.coroutines.EmptyCoroutineContext import kotlin.test.assertEquals diff --git a/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt b/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt index b6b4eb833..c60eea92e 100644 --- a/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt +++ b/mirai-core-api/src/jvmTest/kotlin/utils/LockFreeLinkedListTest.kt @@ -145,6 +145,7 @@ internal class LockFreeLinkedListTest { list.size shouldBeEqualTo 0 } + @OptIn(ExperimentalUnsignedTypes::class) @Test fun withInlineClassElements() { val list = LockFreeLinkedList() diff --git a/mirai-core/src/jvmTest/java/SimpleListenerHostTest.java b/mirai-core/src/jvmTest/java/net/mamoe/mirai/javatest/SimpleListenerHostTest.java similarity index 71% rename from mirai-core/src/jvmTest/java/SimpleListenerHostTest.java rename to mirai-core/src/jvmTest/java/net/mamoe/mirai/javatest/SimpleListenerHostTest.java index 422e925ba..faf12d2b5 100644 --- a/mirai-core/src/jvmTest/java/SimpleListenerHostTest.java +++ b/mirai-core/src/jvmTest/java/net/mamoe/mirai/javatest/SimpleListenerHostTest.java @@ -1,9 +1,12 @@ /* - * Copyright 2020 Mamoe Technologies and contributors. - * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. - * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. * - * https://github.com/mamoe/mirai/blob/master/LICENSE + * * Copyright 2020 Mamoe Technologies and contributors. + * * + * * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证. + * * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link. + * * + * * https://github.com/mamoe/mirai/blob/master/LICENSE + * */ package net.mamoe.mirai.javatest; @@ -12,7 +15,7 @@ import kotlin.coroutines.EmptyCoroutineContext; import kotlinx.coroutines.CoroutineScope; import kotlinx.coroutines.CoroutineScopeKt; import net.mamoe.mirai.event.*; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.concurrent.atomic.AtomicBoolean; From 0477ed94e822bb875b597b3df14c778a9394f34d Mon Sep 17 00:00:00 2001 From: Him188 Date: Sat, 3 Oct 2020 13:47:36 +0800 Subject: [PATCH 11/11] Fix tests --- mirai-core/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mirai-core/build.gradle.kts b/mirai-core/build.gradle.kts index 54738eb40..b0e6c91f0 100644 --- a/mirai-core/build.gradle.kts +++ b/mirai-core/build.gradle.kts @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet plugins { kotlin("multiplatform") - id("kotlinx-atomicfu") + // id("kotlinx-atomicfu") kotlin("plugin.serialization") id("net.mamoe.kotlin-jvm-blocking-bridge") `maven-publish`