From becf6bf8bc0f710d10a76fbcb41c4a652f6de7fa Mon Sep 17 00:00:00 2001 From: Dominik Ferber Date: Thu, 6 Apr 2023 07:29:08 +0300 Subject: [PATCH] add-cache-no-store (#86) * add-cache-no-store * add changeset * enter canary pre release mode --- .changeset/pre.json | 8 ++++++++ .changeset/rare-swans-vanish.md | 5 +++++ src/index.common.test.ts | 17 ++++++++++++++--- src/index.edge.test.ts | 34 +++++++++++++++++++++++++++++---- src/index.edge.ts | 8 +++++++- src/index.node.test.ts | 34 +++++++++++++++++++++++++++++---- src/index.node.ts | 8 +++++++- 7 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 .changeset/pre.json create mode 100644 .changeset/rare-swans-vanish.md diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..e553a6b5c --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "canary", + "initialVersions": { + "@vercel/edge-config": "0.1.5" + }, + "changesets": [] +} diff --git a/.changeset/rare-swans-vanish.md b/.changeset/rare-swans-vanish.md new file mode 100644 index 000000000..2235f637f --- /dev/null +++ b/.changeset/rare-swans-vanish.md @@ -0,0 +1,5 @@ +--- +'@vercel/edge-config': patch +--- + +add cache: no-store to fetch requests diff --git a/src/index.common.test.ts b/src/index.common.test.ts index fda360521..8c000b4da 100644 --- a/src/index.common.test.ts +++ b/src/index.common.test.ts @@ -90,7 +90,10 @@ describe.each([ expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${modifiedBaseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-2' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-2' }), + cache: 'no-store', + }, ); }); }); @@ -109,6 +112,7 @@ describe.each([ { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-2' }), + cache: 'no-store', }, ); }); @@ -125,7 +129,10 @@ describe.each([ expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${modifiedBaseUrl}/digest?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-2' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-2' }), + cache: 'no-store', + }, ); }); }); @@ -166,7 +173,10 @@ describe.each([ expect(fetchMock).toHaveBeenCalledTimes(2); expect(fetchMock).toHaveBeenCalledWith( `${modifiedBaseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-2' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-2' }), + cache: 'no-store', + }, ); expect(fetchMock).toHaveBeenCalledWith( `${modifiedBaseUrl}/item/foo?version=1`, @@ -175,6 +185,7 @@ describe.each([ Authorization: 'Bearer token-2', 'if-none-match': 'a', }), + cache: 'no-store', }, ); }); diff --git a/src/index.edge.test.ts b/src/index.edge.test.ts index 23cad0101..245e0f5f8 100644 --- a/src/index.edge.test.ts +++ b/src/index.edge.test.ts @@ -26,6 +26,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); @@ -39,7 +40,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -67,7 +71,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -93,6 +100,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -111,6 +119,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -129,6 +138,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -145,6 +155,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -161,7 +172,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/items?version=1&key=foo&key=bar`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -185,7 +199,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/items?version=1&key=foo&key=bar`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -201,6 +218,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -216,6 +234,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -234,6 +253,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -265,6 +285,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -292,6 +313,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -308,6 +330,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -323,6 +346,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); @@ -336,6 +360,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -351,6 +376,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); diff --git a/src/index.edge.ts b/src/index.edge.ts index 5436f4672..79097bfa8 100644 --- a/src/index.edge.ts +++ b/src/index.edge.ts @@ -41,6 +41,7 @@ export function createClient( assertIsKey(key); return fetchWithCachedResponse(`${url}/item/${key}?version=${version}`, { headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -67,6 +68,7 @@ export function createClient( return fetchWithCachedResponse(`${url}/item/${key}?version=${version}`, { method: 'HEAD', headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -103,7 +105,10 @@ export function createClient( return fetchWithCachedResponse( `${url}/items?version=${version}${search === null ? '' : `&${search}`}`, - { headers: new Headers(headers) }, + { + headers: new Headers(headers), + cache: 'no-store', + }, ).then( async (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -123,6 +128,7 @@ export function createClient( async digest(): Promise { return fetchWithCachedResponse(`${url}/digest?version=1`, { headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.cachedResponseBody !== undefined) diff --git a/src/index.node.test.ts b/src/index.node.test.ts index 459caf71f..6d33e5b4b 100644 --- a/src/index.node.test.ts +++ b/src/index.node.test.ts @@ -44,6 +44,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); @@ -57,7 +58,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -85,7 +89,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/item/foo?version=1`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -111,6 +118,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -129,6 +137,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -147,6 +156,7 @@ describe('default Edge Config', () => { `${baseUrl}/item/foo?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -163,6 +173,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -179,7 +190,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/items?version=1&key=foo&key=bar`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -203,7 +217,10 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith( `${baseUrl}/items?version=1&key=foo&key=bar`, - { headers: new Headers({ Authorization: 'Bearer token-1' }) }, + { + headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', + }, ); }); }); @@ -219,6 +236,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -234,6 +252,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/items?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -252,6 +271,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -283,6 +303,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -310,6 +331,7 @@ describe('default Edge Config', () => { { method: 'HEAD', headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }, ); }); @@ -326,6 +348,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -341,6 +364,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); @@ -354,6 +378,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); @@ -369,6 +394,7 @@ describe('default Edge Config', () => { expect(fetchMock).toHaveBeenCalledTimes(1); expect(fetchMock).toHaveBeenCalledWith(`${baseUrl}/digest?version=1`, { headers: new Headers({ Authorization: 'Bearer token-1' }), + cache: 'no-store', }); }); }); diff --git a/src/index.node.ts b/src/index.node.ts index 7b09213b4..8387c32fc 100644 --- a/src/index.node.ts +++ b/src/index.node.ts @@ -78,6 +78,7 @@ export function createClient( assertIsKey(key); return fetchWithCachedResponse(`${url}/item/${key}?version=${version}`, { headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -110,6 +111,7 @@ export function createClient( return fetchWithCachedResponse(`${url}/item/${key}?version=${version}`, { method: 'HEAD', headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -157,7 +159,10 @@ export function createClient( return fetchWithCachedResponse( `${url}/items?version=${version}${search === null ? '' : `&${search}`}`, - { headers: new Headers(headers) }, + { + headers: new Headers(headers), + cache: 'no-store', + }, ).then( async (res) => { if (res.status === 401) throw new Error(ERRORS.UNAUTHORIZED); @@ -183,6 +188,7 @@ export function createClient( return fetchWithCachedResponse(`${url}/digest?version=1`, { headers: new Headers(headers), + cache: 'no-store', }).then( (res) => { if (res.cachedResponseBody !== undefined)