public suspend fun startScroll()

in http/client/src/commonMain/kotlin/org/jetbrains/packagesearch/api/v3/http/PackageSearchApiClient.kt [370:401]


    public suspend fun startScroll(
        request: SearchPackagesStartScrollRequest,
        requestBuilder: (HttpRequestBuilder.() -> Unit)? = null,
    ): SearchPackagesScrollResponse {

        val scrollCache = scrollRequestCacheCollection.await()
        scrollCache.find(selector = ScrollRequestCacheEntry::key.name, value = request)
            .firstOrNull()?.also { if (!it.isExpired(cacheDuration)) return it.value }

        return defaultRequest<_, SearchPackagesScrollResponse>(
            method = HttpMethod.Post,
            url = endpoints.startScroll,
            body = request,
            requestBuilder = requestBuilder,
        ).also { it ->
            scrollCache.updateWhere(
                fieldSelector = ScrollRequestCacheEntry::key.name,
                fieldValue = request,
                upsert = true,
                update = ScrollRequestCacheEntry(request, it)
            )
            val packagesCache = packagesCacheCollection.await()
            it.data.forEach {
                packagesCache.updateWhere(
                    fieldSelector = PackageCacheEntry::key.name,
                    fieldValue = it.idHash,
                    upsert = true,
                    update = PackageCacheEntry(it.idHash, it)
                )
            }
        }
    }