Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release: v4.10.0 #996

Merged
merged 39 commits into from
Dec 30, 2024
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
da49775
Edit qodana ci config
ForteScarlet Dec 4, 2024
0eeeb24
Edit qodana ci config
ForteScarlet Dec 4, 2024
4a8b8e3
Edit qodana ci config
ForteScarlet Dec 4, 2024
f70c90b
checkout@v3?
ForteScarlet Dec 4, 2024
10e15c4
setup gradle?
ForteScarlet Dec 4, 2024
e418d7f
setup gradle?
ForteScarlet Dec 4, 2024
ad984a2
setup gradle?
ForteScarlet Dec 4, 2024
1fec545
setup gradle?
ForteScarlet Dec 4, 2024
793d51c
setup gradle?
ForteScarlet Dec 4, 2024
c2f9f14
setup gradle?
ForteScarlet Dec 4, 2024
46e3be5
Merge pull request #981 from simple-robot/fix-qodana-ci
ForteScarlet Dec 4, 2024
e4e447f
Qodana CI?
ForteScarlet Dec 4, 2024
be1b162
Merge branch 'fix-qodana-ci' into v4-dev
ForteScarlet Dec 4, 2024
3307c6c
Qodana CI?
ForteScarlet Dec 4, 2024
d7b6f73
Qodana CI?
ForteScarlet Dec 4, 2024
2272847
checkout for v4
ForteScarlet Dec 4, 2024
66e42a0
Next version: 4.10.0
ForteScarlet Dec 5, 2024
32a0e32
基于KotlinxIO改善Resource[部分]
ForteScarlet Dec 5, 2024
1849abd
build(deps): bump io.projectreactor:reactor-test from 3.7.0 to 3.7.1
dependabot[bot] Dec 10, 2024
ae51930
build(deps): bump io.projectreactor:reactor-core from 3.7.0 to 3.7.1
dependabot[bot] Dec 10, 2024
6309e9a
基于KotlinxIO改善Resource[部分]
ForteScarlet Dec 11, 2024
98967d4
Merge pull request #985 from simple-robot/dependabot/gradle/v4-dev/io…
ForteScarlet Dec 12, 2024
48865b0
Merge pull request #984 from simple-robot/dependabot/gradle/v4-dev/io…
ForteScarlet Dec 12, 2024
fb70149
Next version: 4.10.0
ForteScarlet Dec 5, 2024
fed5311
基于KotlinxIO改善Resource[部分]
ForteScarlet Dec 5, 2024
1e697fe
基于KotlinxIO改善Resource[部分]
ForteScarlet Dec 11, 2024
158313a
Merge remote-tracking branch 'origin/pref-resurce-io' into pref-resur…
ForteScarlet Dec 12, 2024
9b281b5
build(deps): bump org.jetbrains.kotlinx.kover from 0.8.3 to 0.9.0
dependabot[bot] Dec 12, 2024
c7fa3d0
Merge pull request #986 from simple-robot/dependabot/gradle/v4-dev/or…
ForteScarlet Dec 14, 2024
e56f51e
build(deps): bump io.spring.dependency-management from 1.1.5 to 1.1.7
dependabot[bot] Dec 17, 2024
3be7413
build(deps): bump io.mockk:mockk from 1.13.13 to 1.13.14
dependabot[bot] Dec 20, 2024
3433d15
Merge pull request #992 from simple-robot/dependabot/gradle/v4-dev/io…
ForteScarlet Dec 21, 2024
7e2e2b0
Merge pull request #988 from simple-robot/dependabot/gradle/v4-dev/io…
ForteScarlet Dec 21, 2024
de36fc6
调整部分Resource API
ForteScarlet Dec 21, 2024
0d9e287
Fix tests (remove some tests)
ForteScarlet Dec 22, 2024
fdcb4df
Merge pull request #993 from simple-robot/pref-resurce-io
ForteScarlet Dec 22, 2024
66d34de
feat: 简化ContentTrimEventInterceptorFactory.create实现
LightQuanta Dec 28, 2024
d3e1f0e
Merge pull request #995 from LightQuanta/v4-dev
ForteScarlet Dec 28, 2024
9caf702
release: v4.10.0
ForteScarlet Dec 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
基于KotlinxIO改善Resource[部分]
Signed-off-by: ForteScarlet <ForteScarlet@163.com>
ForteScarlet committed Dec 12, 2024
commit 1e697fe6de4b3ac5c50930fbe00dfc119ea8a9cf
Original file line number Diff line number Diff line change
@@ -23,11 +23,8 @@

package love.forte.simbot.message

import love.forte.simbot.resource.ByteArrayResource
import love.forte.simbot.resource.Resource
import love.forte.simbot.resource.ResourceResolver
import love.forte.simbot.resource.*
import love.forte.simbot.resource.ResourceResolver.Companion.resolve
import love.forte.simbot.resource.StringResource
import kotlin.jvm.JvmStatic


@@ -76,6 +73,7 @@ public interface OfflineImageResolver<C> {
* 继承 [OfflineImageResolver] 和 [ResourceResolver],
* 对其中可能出现的实际内容物(例如 [ByteArray] 或 [String])进行处理。
*/
@ScheduledDeprecatedResourceApi
public interface OfflineImageValueResolver<C> :
OfflineImageResolver<C>,
ResourceResolver<C> {
Original file line number Diff line number Diff line change
@@ -62,8 +62,6 @@ import kotlin.jvm.JvmName
* @author ForteScarlet
*/
public sealed interface Resource {
// TODO become `sealed` for ByteArrayResource and SourceResource.

/**
* 读取此资源的字节数据。
*
Original file line number Diff line number Diff line change
@@ -23,8 +23,23 @@

package love.forte.simbot.resource

import kotlin.annotation.AnnotationRetention.BINARY
import kotlin.annotation.AnnotationTarget.CLASS
import kotlin.annotation.AnnotationTarget.FUNCTION
import kotlin.jvm.JvmStatic

/**
* 计划被废弃的与 [Resource] 相关的API
*/
@RequiresOptIn(
message = "计划被废弃的与 `Resource` 相关的API. 详见 " +
"`love.forte.simbot.resource.ResourceResolver` 和 " +
"`love.forte.simbot.resource.Resource` 中的有关说明。"
)
@Retention(BINARY)
@Target(CLASS, FUNCTION)
@MustBeDocumented
public annotation class ScheduledDeprecatedResourceApi

/**
* 使用 [ResourceResolver] 分析处理一个 [Resource].
@@ -33,8 +48,14 @@ import kotlin.jvm.JvmStatic
*
* 在 JVM 平台会提供一个具有更多能力的类型。
*
* Note: 由于[Resource]现在已经通过 `sealed` 限制了子类型范围,
* 因此可以直接使用 [ByteArrayResource] 或 [SourceResource]。
* 得益于 `kotlinx-io`,明确 resolve 多平台(尤其是JVM平台)下的独特类型的情况已经不多了。
* [ResourceResolver] 可能会在未来废弃, 且现在开始不再建议使用。
*
* @author ForteScarlet
*/
@ScheduledDeprecatedResourceApi
public interface ResourceResolver<C> {
/**
* 处理一个未知的 [Resource] 类型的 resource.
Original file line number Diff line number Diff line change
@@ -71,6 +71,7 @@ public interface JvmOfflineImageResolver<C> : OfflineImageResolver<C> {
* 实现 [JvmOfflineImageResolver] 和 [JvmResourceResolver],
* 对其中可能出现的实际内容物(例如 [File] 或 [Path])进行处理。
*/
@ScheduledDeprecatedResourceApi
public abstract class JvmOfflineImageValueResolver<C> :
OfflineImageValueResolver<C>,
JvmOfflineImageResolver<C>,
Original file line number Diff line number Diff line change
@@ -50,6 +50,15 @@ public fun SourceResource.inputStream(): InputStream {
return source().asInputStream()
}

/**
* 提供JVM平台独特实现的类型,与 [SourceResource] 内容相同。
*
* @see FileResource
* @see PathResource
* @see URIResource
*/
public sealed interface JvmSourceResource : SourceResource

/**
* 能够获取到 [InputStream] 资源的 [Resource] 扩展实现。
*
@@ -148,7 +157,11 @@ public interface ReaderResource : JvmStringReadableResource {
*
* @author forte
*/
public interface FileResource : InputStreamResource, ReaderResource {
@Suppress("DEPRECATION")
public interface FileResource :
JvmSourceResource,
InputStreamResource,
ReaderResource {
/**
* 与此资源关联的 [File]
*/
@@ -248,7 +261,11 @@ private data class FileResourceImpl(override val file: File, private val charset
*
* @author forte
*/
public interface PathResource : InputStreamResource, ReaderResource {
@Suppress("DEPRECATION")
public interface PathResource :
JvmSourceResource,
InputStreamResource,
ReaderResource {
/**
* 与此资源关联的 [Path]
*/
@@ -350,7 +367,11 @@ private data class PathResourceImpl(
*
* @author forte
*/
public interface URIResource : InputStreamResource, JvmStringReadableResource {
@Suppress("DEPRECATION")
public interface URIResource :
JvmSourceResource,
InputStreamResource,
JvmStringReadableResource {
/**
* 与此资源关联的 [URI]
*/
Original file line number Diff line number Diff line change
@@ -32,6 +32,7 @@ import kotlin.io.path.toPath
* JVM 平台下 [ResourceResolver] 的进一步扩展类型。
*
*/
@ScheduledDeprecatedResourceApi
public interface JvmResourceResolver<C> : ResourceResolver<C> {
/**
* 处理类型为 [FileResource] 的 resource.
@@ -71,6 +72,7 @@ public interface JvmResourceResolver<C> : ResourceResolver<C> {
/**
* [JvmResourceResolver] 的更安全的抽象类型,将 [resolveUnknown] 固定为 `final`。
*/
@ScheduledDeprecatedResourceApi
public abstract class AbstractJvmResourceResolver<C> : JvmResourceResolver<C> {
final override fun resolveUnknown(resource: Resource, context: C) {
super.resolveUnknown(resource, context)
@@ -81,6 +83,7 @@ public abstract class AbstractJvmResourceResolver<C> : JvmResourceResolver<C> {
* 基于 Resource 中的值进行处理。
* 其中,如果 [URI.scheme] == `"file"` 则会被处理为 [Path].
*/
@ScheduledDeprecatedResourceApi
public interface JvmResourceValueResolver<C> : JvmResourceResolver<C> {
/**
* 解析 [FileResource] 类型的 resource,
@@ -172,6 +175,7 @@ public interface JvmResourceValueResolver<C> : JvmResourceResolver<C> {
* [JvmResourceValueResolver] 的更安全的抽象类型,
* 会将部分直接解析 [Resource] 的函数固定为 `final`。
*/
@ScheduledDeprecatedResourceApi
public abstract class AbstractJvmResourceValueResolver<C> : JvmResourceValueResolver<C> {
final override fun resolveFile(resource: FileResource, context: C) {
super.resolveFile(resource, context)
Original file line number Diff line number Diff line change
@@ -33,6 +33,7 @@ import love.forte.simbot.message.OfflineImageResolver.Companion.resolve
import love.forte.simbot.message.OfflinePathImage.Companion.toOfflineImage
import love.forte.simbot.message.OfflineURIImage.Companion.toOfflineImage
import love.forte.simbot.resource.Resource
import love.forte.simbot.resource.ScheduledDeprecatedResourceApi
import love.forte.simbot.resource.toResource
import java.io.File
import java.net.URI
@@ -59,6 +60,7 @@ class JvmOfflineImageResolverTests {
U
}

@OptIn(ScheduledDeprecatedResourceApi::class)
@Test
fun jvmOfflineImageValueResolverTest() = runTest {
val path = Files.createTempFile("PRE", "SUF")
@@ -109,9 +111,7 @@ class JvmOfflineImageResolverTests {
Value.UKN_R,
suspendCancellableCoroutine { c ->
resolver.resolve(
object : Resource {
override fun data(): ByteArray = byteArrayOf()
}.toOfflineImage(),
byteArrayOf().toOfflineImage(),
c
)
}