From 43069722744822853dbc459aea5ab5a4b8bd924f Mon Sep 17 00:00:00 2001 From: Xavier Foucrier Date: Mon, 31 Jul 2023 11:22:33 +0200 Subject: [PATCH 1/3] feat(core): :sparkles: add `cacheFirstPage` option --- packages/core/src/core.ts | 4 ++++ packages/core/src/defs/barba.ts | 2 ++ 2 files changed, 6 insertions(+) diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index cf9bc831..ca8ee06e 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -74,6 +74,7 @@ export class Core { */ public timeout: number; public cacheIgnore: IgnoreOption; + public cacheFirstPage: boolean; public prefetchIgnore: IgnoreOption; public preventRunning: boolean; /** @@ -140,6 +141,7 @@ export class Core { * - schema: [[SchemaAttribute]] * - timeout: `2e3` * - cacheIgnore: `false` + * - cacheFirstPage: `false` * - prefetchIgnore: `false` * - preventRunning: `false` * - prevent: `null`, @@ -154,6 +156,7 @@ export class Core { requestError, timeout = 2e3, cacheIgnore = false, + cacheFirstPage = false, prefetchIgnore = false, /* istanbul ignore next */ preventRunning = false, @@ -178,6 +181,7 @@ export class Core { this._requestCustomError = requestError; this.timeout = timeout; this.cacheIgnore = cacheIgnore; + this.cacheFirstPage = cacheFirstPage; this.prefetchIgnore = prefetchIgnore; this.preventRunning = preventRunning; diff --git a/packages/core/src/defs/barba.ts b/packages/core/src/defs/barba.ts index 03c12014..e7823f6a 100644 --- a/packages/core/src/defs/barba.ts +++ b/packages/core/src/defs/barba.ts @@ -27,6 +27,8 @@ export interface IBarbaOptions { requestError?: RequestCustomError | undefined; /** Disable cache or ignore some routes. */ cacheIgnore?: IgnoreOption; + /** Disable cache on the first rendered page. */ + cacheFirstPage?: boolean; /** Disable prefetch or ignore routes. */ prefetchIgnore?: IgnoreOption; /** Custom prevent check. */ From 53fc9c7672a8b2ed58d0367e191cdfa175f05551 Mon Sep 17 00:00:00 2001 From: Xavier Foucrier Date: Mon, 31 Jul 2023 11:25:09 +0200 Subject: [PATCH 2/3] imp(core): :sparkles: use new option to prevent caching first rendered page --- packages/core/src/core.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index ca8ee06e..1d2609ce 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -220,10 +220,12 @@ export class Core { this.history.init(current.url.href, current.namespace); // 6. Add to cache - this.cache.set(current.url.href, Promise.resolve({ - html: current.html, - url: current.url, - }), 'init', 'fulfilled'); + if (cacheFirstPage) { + this.cache.set(current.url.href, Promise.resolve({ + html: current.html, + url: current.url, + }), 'init', 'fulfilled'); + } // 7. Bind context this._onLinkEnter = this._onLinkEnter.bind(this); From b745e97562611b97417ceed4c7eb98edc5a055cd Mon Sep 17 00:00:00 2001 From: Xavier Foucrier Date: Tue, 1 Aug 2023 13:39:49 +0200 Subject: [PATCH 3/3] test(core): :white_check_mark: test `cacheFirstPage` option --- packages/core/__tests__/core/core.init.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/core/__tests__/core/core.init.test.ts b/packages/core/__tests__/core/core.init.test.ts index c3a0ce15..ee3cd992 100644 --- a/packages/core/__tests__/core/core.init.test.ts +++ b/packages/core/__tests__/core/core.init.test.ts @@ -122,3 +122,11 @@ it('has other options', () => { expect(requestError()).toBeFalsy(); expect(barba.wrapper).toBe(wrapper); }); + +it('cache the first rendered page', () => { + barba.init({ + cacheFirstPage: true, + }); + + expect(barba.cache.has('http://localhost/')).toBeTruthy(); +});