[PKGS] Update API client to version 3.3.1 (cached) and integrate MVStore

[amper] use PackageSearchApiClientService instead to create a new instance

Updated `package-search-api-client` dependency to version 3.3.1. Integrated `MVStore` for in-memory data storage and added new library dependencies.


Merge-request: IJ-MR-144502
Merged-by: Fabrizio Scarponi <fscarponi@gmail.com>

GitOrigin-RevId: f111fe75fc0e66d35498ed8d92965374a93948a7
This commit is contained in:
fscarponi
2024-10-03 08:48:08 +00:00
committed by intellij-monorepo-bot
parent 513f3fa1ee
commit c0f8ad4adb
4 changed files with 106 additions and 19 deletions

View File

@@ -1,22 +1,34 @@
<component name="libraryTable"> <component name="libraryTable">
<library name="package-search-api-client" type="repository"> <library name="package-search-api-client" type="repository">
<properties maven-id="org.jetbrains.packagesearch:packagesearch-api-client-jvm:3.1.1"> <properties maven-id="org.jetbrains.packagesearch:packagesearch-api-client-jvm:3.3.1">
<verification> <verification>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.1.1/packagesearch-api-client-jvm-3.1.1.jar"> <artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.3.1/packagesearch-api-client-jvm-3.3.1.jar">
<sha256sum>15cf65b66dc121308517db68e82d8930d7e227257bdb862ca07f1328515eea6b</sha256sum> <sha256sum>d7e293f78f1be85cec7a1ad3dfec5b5a868074b00a90a8be2438c25660526019</sha256sum>
</artifact> </artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.1.1/packagesearch-http-models-jvm-3.1.1.jar"> <artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.3.1/packagesearch-http-models-jvm-3.3.1.jar">
<sha256sum>d8eeccae53547378ea2d1aaab6efa94d65c4693e3bcdefed13c44b8ce8a52df9</sha256sum> <sha256sum>0318b967115de0c7c8fbd93bc6e3d279c82de2954f90794146962921de45972d</sha256sum>
</artifact> </artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.1.1/packagesearch-api-models-jvm-3.1.1.jar"> <artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.3.1/packagesearch-api-models-jvm-3.3.1.jar">
<sha256sum>eac34c241019a23d3b0a07b4e04888b110aa4c06a826f80de19d2457f6be4b81</sha256sum> <sha256sum>a16f54c2126f9289610438d4f5592cd386113110cb8180ccfbe6999f5b1a3dbf</sha256sum>
</artifact> </artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.1.1/packagesearch-version-utils-jvm-3.1.1.jar"> <artifact url="file://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-mvstore/0.0.4/kotlinx-document-store-mvstore-0.0.4.jar">
<sha256sum>ec7192861556914e6edb5ce0b901848431b03a327a3ca4045c332ab5b3b24ff8</sha256sum> <sha256sum>956a4c7faad66e3471861adaa278d9486f3a050ac25fb6a99ca90809d379adfe</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.3.1/packagesearch-version-utils-jvm-3.3.1.jar">
<sha256sum>4c86546693efaeb889e02d043521cda15da5f10853b0471095b7db80dc0540e7</sha256sum>
</artifact> </artifact>
<artifact url="file://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10.jar"> <artifact url="file://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10.jar">
<sha256sum>0fe8dcdf54b13b5ec56fdb5f63c057364264bb2f51b7f7bc3c271d5b1ba68dcb</sha256sum> <sha256sum>0fe8dcdf54b13b5ec56fdb5f63c057364264bb2f51b7f7bc3c271d5b1ba68dcb</sha256sum>
</artifact> </artifact>
<artifact url="file://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-core-jvm/0.0.4/kotlinx-document-store-core-jvm-0.0.4.jar">
<sha256sum>7e638082b4a14e3a96ca90f3f5db70ac65591e0b6c6670629e849d22ec34455f</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0.5.0/kotlinx-io-core-jvm-0.5.0.jar">
<sha256sum>f43dd81cf3c7f87abdc80100607b3892a5eb13d87b4d1ceccb7dfb53a68fa4ca</sha256sum>
</artifact>
<artifact url="file://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0.5.0/kotlinx-io-bytestring-jvm-0.5.0.jar">
<sha256sum>9b462754c2a574cb7720b16ef1129e6ea76d360d7c84c58684fcab77b17f844d</sha256sum>
</artifact>
</verification> </verification>
<exclude> <exclude>
<dependency maven-id="io.ktor:ktor-client-cio-jvm" /> <dependency maven-id="io.ktor:ktor-client-cio-jvm" />
@@ -38,22 +50,33 @@
<dependency maven-id="org.jetbrains:annotations" /> <dependency maven-id="org.jetbrains:annotations" />
<dependency maven-id="io.ktor:ktor-serialization-kotlinx-protobuf-jvm" /> <dependency maven-id="io.ktor:ktor-serialization-kotlinx-protobuf-jvm" />
<dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib" /> <dependency maven-id="org.jetbrains.kotlin:kotlin-stdlib" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-serialization-protobuf" />
<dependency maven-id="org.jetbrains.kotlinx:kotlinx-serialization-json" />
<dependency maven-id="com.h2database:h2" />
</exclude> </exclude>
</properties> </properties>
<CLASSES> <CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.1.1/packagesearch-api-client-jvm-3.1.1.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.3.1/packagesearch-api-client-jvm-3.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.1.1/packagesearch-http-models-jvm-3.1.1.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.3.1/packagesearch-http-models-jvm-3.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.1.1/packagesearch-api-models-jvm-3.1.1.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.3.1/packagesearch-api-models-jvm-3.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.1.1/packagesearch-version-utils-jvm-3.1.1.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-mvstore/0.0.4/kotlinx-document-store-mvstore-0.0.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.3.1/packagesearch-version-utils-jvm-3.3.1.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-core-jvm/0.0.4/kotlinx-document-store-core-jvm-0.0.4.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0.5.0/kotlinx-io-core-jvm-0.5.0.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0.5.0/kotlinx-io-bytestring-jvm-0.5.0.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.1.1/packagesearch-api-client-jvm-3.1.1-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3.3.1/packagesearch-api-client-jvm-3.3.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.1.1/packagesearch-http-models-jvm-3.1.1-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3.3.1/packagesearch-http-models-jvm-3.3.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.1.1/packagesearch-api-models-jvm-3.1.1-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3.3.1/packagesearch-api-models-jvm-3.3.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.1.1/packagesearch-version-utils-jvm-3.1.1-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-mvstore/0.0.4/kotlinx-document-store-mvstore-0.0.4-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3.3.1/packagesearch-version-utils-jvm-3.3.1-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10-sources.jar!/" /> <root url="jar://$MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4.0.10/krypto-jvm-4.0.10-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-core-jvm/0.0.4/kotlinx-document-store-core-jvm-0.0.4-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0.5.0/kotlinx-io-core-jvm-0.5.0-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0.5.0/kotlinx-io-bytestring-jvm-0.5.0-sources.jar!/" />
</SOURCES> </SOURCES>
</library> </library>
</component> </component>

View File

@@ -50,5 +50,6 @@
<orderEntry type="library" scope="TEST" name="kotlinx-coroutines-test" level="project" /> <orderEntry type="library" scope="TEST" name="kotlinx-coroutines-test" level="project" />
<orderEntry type="module" module-name="intellij.libraries.ktor.client" /> <orderEntry type="module" module-name="intellij.libraries.ktor.client" />
<orderEntry type="library" exported="" name="package-search-api-client" level="project" /> <orderEntry type="library" exported="" name="package-search-api-client" level="project" />
<orderEntry type="library" name="mvstore" level="project" />
</component> </component>
</module> </module>

View File

@@ -9,8 +9,12 @@
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3/packagesearch-api-client-jvm-3.jar - name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3/packagesearch-api-client-jvm-3.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3/packagesearch-http-models-jvm-3.jar - name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3/packagesearch-http-models-jvm-3.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3/packagesearch-api-models-jvm-3.jar - name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3/packagesearch-api-models-jvm-3.jar
- name: $MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-mvstore/0/kotlinx-document-store-mvstore-0.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3/packagesearch-version-utils-jvm-3.jar - name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3/packagesearch-version-utils-jvm-3.jar
- name: $MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4/krypto-jvm-4.jar - name: $MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4/krypto-jvm-4.jar
- name: $MAVEN_REPOSITORY$/com/github/lamba92/kotlinx-document-store-core-jvm/0/kotlinx-document-store-core-jvm-0.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-core-jvm/0/kotlinx-io-core-jvm-0.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-io-bytestring-jvm/0/kotlinx-io-bytestring-jvm-0.jar
reason: <- intellij.repository.search reason: <- intellij.repository.search
modules: modules:
- name: intellij.repository.search - name: intellij.repository.search

View File

@@ -2,15 +2,26 @@ package org.jetbrains.idea.packagesearch.api
import com.intellij.openapi.Disposable import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.application.ApplicationInfo
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ApplicationNamesInfo
import com.intellij.openapi.application.appSystemDir
import com.intellij.openapi.components.Service import com.intellij.openapi.components.Service
import com.intellij.util.io.createParentDirectories
import io.ktor.client.engine.java.Java import io.ktor.client.engine.java.Java
import io.ktor.client.plugins.DefaultRequest import io.ktor.client.plugins.DefaultRequest
import io.ktor.client.plugins.HttpRequestRetry
import io.ktor.client.plugins.HttpTimeout import io.ktor.client.plugins.HttpTimeout
import io.ktor.client.plugins.UserAgent import io.ktor.client.plugins.UserAgent
import io.ktor.client.plugins.compression.ContentEncoding
import io.ktor.client.plugins.logging.LogLevel import io.ktor.client.plugins.logging.LogLevel
import io.ktor.client.plugins.logging.Logger import io.ktor.client.plugins.logging.Logger
import io.ktor.client.plugins.logging.Logging import io.ktor.client.plugins.logging.Logging
import io.ktor.client.request.headers import io.ktor.client.request.headers
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.document.database.DataStore
import kotlinx.document.database.mvstore.MVDataStore
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval
import org.jetbrains.idea.maven.onlinecompletion.model.MavenDependencyCompletionItem import org.jetbrains.idea.maven.onlinecompletion.model.MavenDependencyCompletionItem
import org.jetbrains.idea.maven.onlinecompletion.model.MavenRepositoryArtifactInfo import org.jetbrains.idea.maven.onlinecompletion.model.MavenRepositoryArtifactInfo
@@ -18,16 +29,21 @@ import org.jetbrains.idea.reposearch.DependencySearchProvider
import org.jetbrains.idea.reposearch.PluginEnvironment import org.jetbrains.idea.reposearch.PluginEnvironment
import org.jetbrains.idea.reposearch.RepositoryArtifactData import org.jetbrains.idea.reposearch.RepositoryArtifactData
import org.jetbrains.idea.reposearch.logTrace import org.jetbrains.idea.reposearch.logTrace
import org.jetbrains.packagesearch.api.PackageSearchApiClientObject
import org.jetbrains.packagesearch.api.v3.ApiMavenPackage import org.jetbrains.packagesearch.api.v3.ApiMavenPackage
import org.jetbrains.packagesearch.api.v3.http.PackageSearchApiClient import org.jetbrains.packagesearch.api.v3.http.PackageSearchApiClient
import org.jetbrains.packagesearch.api.v3.http.PackageSearchApiClient.Companion.defaultHttpClient import org.jetbrains.packagesearch.api.v3.http.PackageSearchApiClient.Companion.defaultHttpClient
import org.jetbrains.packagesearch.api.v3.http.PackageSearchEndpoints import org.jetbrains.packagesearch.api.v3.http.PackageSearchEndpoints
import org.jetbrains.packagesearch.api.v3.http.searchPackages import org.jetbrains.packagesearch.api.v3.http.searchPackages
import org.jetbrains.packagesearch.api.v3.search.jvmMavenPackages import org.jetbrains.packagesearch.api.v3.search.jvmMavenPackages
import java.nio.file.Path
import kotlin.io.path.absolutePathString
import kotlin.io.path.div
import kotlin.io.path.exists
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
@Service(Service.Level.APP) @Service(Service.Level.APP)
class PackageSearchApiClientService : Disposable, DependencySearchProvider { class PackageSearchApiClientService(val coroutineScope: CoroutineScope) : Disposable, DependencySearchProvider {
private val httpClient = defaultHttpClient(engine = Java, protobuf = false) { private val httpClient = defaultHttpClient(engine = Java, protobuf = false) {
install(UserAgent) { install(UserAgent) {
@@ -35,7 +51,7 @@ class PackageSearchApiClientService : Disposable, DependencySearchProvider {
} }
install(DefaultRequest) { install(DefaultRequest) {
headers { headers {
append("Api-Version", "3.1.1") append("Api-Version", PackageSearchApiClientObject.version)
append("JB-IDE-Version", PluginEnvironment.ideVersion) append("JB-IDE-Version", PluginEnvironment.ideVersion)
} }
} }
@@ -48,18 +64,48 @@ class PackageSearchApiClientService : Disposable, DependencySearchProvider {
} }
} }
} }
install(ContentEncoding) {
deflate()
gzip()
}
install(HttpRequestRetry) {
maxRetries = 5
retryOnException(retryOnTimeout = true)
}
install(HttpTimeout) { install(HttpTimeout) {
requestTimeoutMillis = 10.seconds.inWholeMilliseconds requestTimeoutMillis = 10.seconds.inWholeMilliseconds
socketTimeoutMillis = 3.seconds.inWholeMilliseconds
connectTimeoutMillis = 3.seconds.inWholeMilliseconds
}
install(UserAgent) {
agent = intelliJ()
} }
} }
private val cacheFilePath
get() = appSystemDir / "caches" / "packagesearch" / "${PackageSearchApiClientObject.version}.db"
private val mvDataStore = MVDataStore.open(
getCacheFile(),
DataStore.CommitStrategy.Periodic(5.seconds))
val client = PackageSearchApiClient( val client = PackageSearchApiClient(
dataStore = mvDataStore,
endpoints = PackageSearchEndpoints.PROD, endpoints = PackageSearchEndpoints.PROD,
httpClient = httpClient httpClient = httpClient
) )
private fun getCacheFile(): Path {
if (!cacheFilePath.exists()) cacheFilePath.createParentDirectories().absolutePathString()
return cacheFilePath
}
override fun dispose() { override fun dispose() {
httpClient.close() httpClient.close()
coroutineScope.launch(Dispatchers.IO) {
mvDataStore.close()
}
} }
@Deprecated("Use directly the client instead") @Deprecated("Use directly the client instead")
@@ -126,3 +172,16 @@ private fun ApiMavenPackage.repositoryArtifactData(): MavenRepositoryArtifactInf
/* version = */ versions.toTypedArray() /* version = */ versions.toTypedArray()
) )
} }
private fun UserAgent.Config.intelliJ(): String {
val app = ApplicationManager.getApplication()
if (app != null && !app.isDisposed) {
val productName = ApplicationNamesInfo.getInstance().fullProductName
val version = ApplicationInfo.getInstance().build.asStringWithoutProductCode()
return "$productName/$version"
}
else {
return "IntelliJ"
}
}