From d540b0f0a438c8f8ff08d06b7ea0f9454b370dec Mon Sep 17 00:00:00 2001 From: Phil Pluckthun Date: Wed, 30 Sep 2020 16:24:05 +0100 Subject: [PATCH] Add experimental buffer fix for edge cases in Svelte/Preact --- exchanges/graphcache/src/cacheExchange.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/exchanges/graphcache/src/cacheExchange.ts b/exchanges/graphcache/src/cacheExchange.ts index 9c3bc99518..598ea059dc 100644 --- a/exchanges/graphcache/src/cacheExchange.ts +++ b/exchanges/graphcache/src/cacheExchange.ts @@ -11,13 +11,14 @@ import { import { filter, + combine, + scan, map, merge, pipe, share, fromPromise, fromArray, - buffer, take, mergeMap, concat, @@ -249,10 +250,15 @@ export const cacheExchange = (opts?: CacheExchangeOpts): Exchange => ({ // If no hydration takes place we replace this stream with an empty one const bufferedOps$ = hydration ? pipe( - sharedOps$, - buffer(fromPromise(hydration)), + combine( + pipe( + sharedOps$, + scan((acc: Operation[], x) => (acc.push(x), acc), []) + ), + fromPromise(hydration) + ), take(1), - mergeMap(fromArray) + mergeMap(zip => fromArray(zip[0])) ) : (empty as Source);