From 7b1350feda10cbae8826f37262fefb322fd2cbba Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Mon, 27 Jun 2022 11:52:07 -0500 Subject: [PATCH 1/3] Add error for renaming of unstable_revalidate --- packages/next/server/api-utils/node.ts | 7 +++++++ packages/next/shared/lib/utils.ts | 5 +++++ test/e2e/prerender.test.ts | 14 ++++++++++++++ test/e2e/prerender/pages/api/manual-revalidate.js | 3 +++ 4 files changed, 29 insertions(+) diff --git a/packages/next/server/api-utils/node.ts b/packages/next/server/api-utils/node.ts index f1f613b7d0643..0d360551e7432 100644 --- a/packages/next/server/api-utils/node.ts +++ b/packages/next/server/api-utils/node.ts @@ -243,6 +243,13 @@ export async function apiResolver( } ) => revalidate(urlPath, opts || {}, req, apiContext) + // TODO: remove in next minor (current v12.2) + apiRes.unstable_revalidate = () => { + throw new Error( + `"unstable_revalidate" has been renamed to "revalidate" see more info here: https://nextjs.org/docs/basic-features/data-fetching/incremental-static-regeneration#on-demand-revalidation` + ) + } + const resolver = interopDefault(resolverModule) let wasPiped = false diff --git a/packages/next/shared/lib/utils.ts b/packages/next/shared/lib/utils.ts index c541f81bff60b..4d381c37c3f27 100644 --- a/packages/next/shared/lib/utils.ts +++ b/packages/next/shared/lib/utils.ts @@ -256,6 +256,11 @@ export type NextApiResponse = ServerResponse & { ) => NextApiResponse clearPreviewData: () => NextApiResponse + /** + * @deprecated `unstable_revalidate` has been renamed to `revalidate` + */ + unstable_revalidate: () => void + revalidate: ( urlPath: string, opts?: { diff --git a/test/e2e/prerender.test.ts b/test/e2e/prerender.test.ts index 04e7a5fc58e17..a9970754446d0 100644 --- a/test/e2e/prerender.test.ts +++ b/test/e2e/prerender.test.ts @@ -2047,6 +2047,20 @@ describe('Prerender', () => { ) }) + if (!(global as any).isNextDeploy) { + it.only('should show error about renaming unstable_revalidate', async () => { + const res = await fetchViaHTTP(next.url, '/api/manual-revalidate', { + pathname: '/blog/first', + deprecated: '1', + }) + expect(res.status).toBe(500) + + expect(next.cliOutput).toContain( + '"unstable_revalidate" has been renamed to "revalidate"' + ) + }) + } + it('should handle manual revalidate for fallback: blocking', async () => { const beforeRevalidate = Date.now() const res = await fetchViaHTTP( diff --git a/test/e2e/prerender/pages/api/manual-revalidate.js b/test/e2e/prerender/pages/api/manual-revalidate.js index 0a53bb960929c..6d900febd8377 100644 --- a/test/e2e/prerender/pages/api/manual-revalidate.js +++ b/test/e2e/prerender/pages/api/manual-revalidate.js @@ -1,4 +1,7 @@ export default async function handler(req, res) { + if (req.query.deprecated) { + await res.unstable_revalidate(req.query.pathname) + } // WARNING: don't use user input in production // make sure to use trusted value for revalidating let revalidated = false From da6f44231de1d03eecb9f1096df3466d8f709fdc Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Mon, 27 Jun 2022 11:54:09 -0500 Subject: [PATCH 2/3] update test --- test/e2e/prerender.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/prerender.test.ts b/test/e2e/prerender.test.ts index a9970754446d0..9b7c555304423 100644 --- a/test/e2e/prerender.test.ts +++ b/test/e2e/prerender.test.ts @@ -2048,7 +2048,7 @@ describe('Prerender', () => { }) if (!(global as any).isNextDeploy) { - it.only('should show error about renaming unstable_revalidate', async () => { + it('should show error about renaming unstable_revalidate', async () => { const res = await fetchViaHTTP(next.url, '/api/manual-revalidate', { pathname: '/blog/first', deprecated: '1', From 488f3daffa1dfc20ff63e8a26df9bd218e8aad4f Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Mon, 27 Jun 2022 11:56:17 -0500 Subject: [PATCH 3/3] run test for dev too --- test/e2e/prerender.test.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/test/e2e/prerender.test.ts b/test/e2e/prerender.test.ts index 9b7c555304423..434ab7c87caa7 100644 --- a/test/e2e/prerender.test.ts +++ b/test/e2e/prerender.test.ts @@ -741,6 +741,20 @@ describe('Prerender', () => { expect(value).toMatch(/Hi \[third\] \[fourth\]/) }) + if (!(global as any).isNextDeploy) { + it('should show error about renaming unstable_revalidate', async () => { + const res = await fetchViaHTTP(next.url, '/api/manual-revalidate', { + pathname: '/blog/first', + deprecated: '1', + }) + expect(res.status).toBe(500) + + expect(next.cliOutput).toContain( + '"unstable_revalidate" has been renamed to "revalidate"' + ) + }) + } + if ((global as any).isNextStart) { // TODO: dev currently renders this page as blocking, meaning it shows the // server error instead of continuously retrying. Do we want to change this? @@ -2047,20 +2061,6 @@ describe('Prerender', () => { ) }) - if (!(global as any).isNextDeploy) { - it('should show error about renaming unstable_revalidate', async () => { - const res = await fetchViaHTTP(next.url, '/api/manual-revalidate', { - pathname: '/blog/first', - deprecated: '1', - }) - expect(res.status).toBe(500) - - expect(next.cliOutput).toContain( - '"unstable_revalidate" has been renamed to "revalidate"' - ) - }) - } - it('should handle manual revalidate for fallback: blocking', async () => { const beforeRevalidate = Date.now() const res = await fetchViaHTTP(