From d1951ce9911dddfdd00d8765a8b27a4249d5212f Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Mon, 16 Sep 2024 01:16:05 +0300 Subject: [PATCH 01/10] fix(hydration): provide compat fallback for idle callback --- packages/runtime-core/src/hydrationStrategies.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 51200fc1c34..40ac94b3d3f 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,6 +1,20 @@ import { isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' +// https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts +// Polyfills for Safari support +// https://caniuse.com/requestidlecallback +const requestIdleCallback: Window['requestIdleCallback'] = globalThis.requestIdleCallback || cb => { + const start = Date.now() + const idleDeadline = { + didTimeout: false, + timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), + } + return setTimeout(() => { cb(idleDeadline) }, 1) +} + +const cancelIdleCallback: Window['cancelIdleCallback'] = globalThis.cancelIdleCallback || id => { clearTimeout(id) } + /** * A lazy hydration strategy for async components. * @param hydrate - call this to perform the actual hydration. From 44c1655e3c059a6f4f33538ba6478afebd6edb52 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Mon, 16 Sep 2024 01:25:36 +0300 Subject: [PATCH 02/10] chore: return parentheses --- packages/runtime-core/src/hydrationStrategies.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 40ac94b3d3f..c3cc5c1a002 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -4,16 +4,16 @@ import { DOMNodeTypes, isComment } from './hydration' // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback -const requestIdleCallback: Window['requestIdleCallback'] = globalThis.requestIdleCallback || cb => { +const requestIdleCallback: Window['requestIdleCallback'] = globalThis.requestIdleCallback || ((cb) => { const start = Date.now() const idleDeadline = { didTimeout: false, timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), } return setTimeout(() => { cb(idleDeadline) }, 1) -} +}) -const cancelIdleCallback: Window['cancelIdleCallback'] = globalThis.cancelIdleCallback || id => { clearTimeout(id) } +const cancelIdleCallback: Window['cancelIdleCallback'] = globalThis.cancelIdleCallback || ((id) => { clearTimeout(id) }) /** * A lazy hydration strategy for async components. From 08eb26f8c868588bf1ec875f26dc1947b8bc04c4 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sun, 15 Sep 2024 22:26:25 +0000 Subject: [PATCH 03/10] [autofix.ci] apply automated fixes --- .../runtime-core/src/hydrationStrategies.ts | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index c3cc5c1a002..73dfc71c915 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -4,16 +4,24 @@ import { DOMNodeTypes, isComment } from './hydration' // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback -const requestIdleCallback: Window['requestIdleCallback'] = globalThis.requestIdleCallback || ((cb) => { - const start = Date.now() - const idleDeadline = { - didTimeout: false, - timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), - } - return setTimeout(() => { cb(idleDeadline) }, 1) -}) +const requestIdleCallback: Window['requestIdleCallback'] = + globalThis.requestIdleCallback || + (cb => { + const start = Date.now() + const idleDeadline = { + didTimeout: false, + timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), + } + return setTimeout(() => { + cb(idleDeadline) + }, 1) + }) -const cancelIdleCallback: Window['cancelIdleCallback'] = globalThis.cancelIdleCallback || ((id) => { clearTimeout(id) }) +const cancelIdleCallback: Window['cancelIdleCallback'] = + globalThis.cancelIdleCallback || + (id => { + clearTimeout(id) + }) /** * A lazy hydration strategy for async components. From 9ed880a5f065a3662cb608099b4d268cb8fe6e67 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Mon, 16 Sep 2024 10:21:58 +0300 Subject: [PATCH 04/10] fix: provide compatible globalThis --- packages/runtime-core/src/hydrationStrategies.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 73dfc71c915..b286e4670d4 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,6 +1,8 @@ import { isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' +import { getGlobalThis } from '@vue/shared' +const globalThis = getGlobalThis() // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback @@ -13,7 +15,7 @@ const requestIdleCallback: Window['requestIdleCallback'] = timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), } return setTimeout(() => { - cb(idleDeadline) + cb }, 1) }) From f3663b7dc4d54db4321ea70c5017d7ae3bbf5a97 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Mon, 16 Sep 2024 10:24:31 +0300 Subject: [PATCH 05/10] chore: combine import --- packages/runtime-core/src/hydrationStrategies.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index b286e4670d4..89330d2c264 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,6 +1,5 @@ -import { isString } from '@vue/shared' +import { isString, getGlobalThis } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' -import { getGlobalThis } from '@vue/shared' const globalThis = getGlobalThis() // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts From 83fc445c2b9128907be26a0149ed446463d96ce2 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 07:25:28 +0000 Subject: [PATCH 06/10] [autofix.ci] apply automated fixes --- packages/runtime-core/src/hydrationStrategies.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 89330d2c264..4ae971fbf2a 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,4 +1,4 @@ -import { isString, getGlobalThis } from '@vue/shared' +import { getGlobalThis, isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' const globalThis = getGlobalThis() From 8d28ac722f5b6aa4047ff62c36255ad9e84eb7b8 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Mon, 16 Sep 2024 11:01:47 +0300 Subject: [PATCH 07/10] types: use typeof for annotations --- packages/runtime-core/src/hydrationStrategies.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 4ae971fbf2a..cb3c3679c99 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -5,7 +5,7 @@ const globalThis = getGlobalThis() // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback -const requestIdleCallback: Window['requestIdleCallback'] = +const requestIdleCallback: typeof globalThis.requestIdleCallback = globalThis.requestIdleCallback || (cb => { const start = Date.now() @@ -13,12 +13,10 @@ const requestIdleCallback: Window['requestIdleCallback'] = didTimeout: false, timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), } - return setTimeout(() => { - cb - }, 1) + return setTimeout(cb, 1) }) -const cancelIdleCallback: Window['cancelIdleCallback'] = +const cancelIdleCallback: typeof globalThis.cancelIdleCallback = globalThis.cancelIdleCallback || (id => { clearTimeout(id) From 9414d1e8f3088a9757a0ed538c0074d401be3cc0 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Wed, 18 Sep 2024 09:27:40 +0300 Subject: [PATCH 08/10] chore: remove unused variable and inline function call --- packages/runtime-core/src/hydrationStrategies.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index cb3c3679c99..0084643ff6c 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,23 +1,18 @@ import { getGlobalThis, isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' -const globalThis = getGlobalThis() +const globalThis = // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback -const requestIdleCallback: typeof globalThis.requestIdleCallback = - globalThis.requestIdleCallback || +const requestIdleCallback: typeof getGlobalThis().requestIdleCallback = + getGlobalThis().requestIdleCallback || (cb => { - const start = Date.now() - const idleDeadline = { - didTimeout: false, - timeRemaining: () => Math.max(0, 50 - (Date.now() - start)), - } return setTimeout(cb, 1) }) -const cancelIdleCallback: typeof globalThis.cancelIdleCallback = - globalThis.cancelIdleCallback || +const cancelIdleCallback: typeof getGlobalThis().cancelIdleCallback = + getGlobalThis().cancelIdleCallback || (id => { clearTimeout(id) }) From b23a04e55c74517e33ad2ccdf8fc5d63c59bb8b7 Mon Sep 17 00:00:00 2001 From: Michael Brevard Date: Wed, 18 Sep 2024 09:28:22 +0300 Subject: [PATCH 09/10] fix: remove line --- packages/runtime-core/src/hydrationStrategies.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 0084643ff6c..84b5a675b4f 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,7 +1,6 @@ import { getGlobalThis, isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' -const globalThis = // https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support // https://caniuse.com/requestidlecallback From ead8750b2f80d1000612befd4ef74efd63dfc84e Mon Sep 17 00:00:00 2001 From: daiwei Date: Tue, 8 Oct 2024 11:29:19 +0800 Subject: [PATCH 10/10] chore: minor tweaks --- .../runtime-core/src/hydrationStrategies.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/packages/runtime-core/src/hydrationStrategies.ts b/packages/runtime-core/src/hydrationStrategies.ts index 84b5a675b4f..85419ebc277 100644 --- a/packages/runtime-core/src/hydrationStrategies.ts +++ b/packages/runtime-core/src/hydrationStrategies.ts @@ -1,20 +1,12 @@ import { getGlobalThis, isString } from '@vue/shared' import { DOMNodeTypes, isComment } from './hydration' -// https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/compat/idle-callback.ts // Polyfills for Safari support -// https://caniuse.com/requestidlecallback -const requestIdleCallback: typeof getGlobalThis().requestIdleCallback = - getGlobalThis().requestIdleCallback || - (cb => { - return setTimeout(cb, 1) - }) - -const cancelIdleCallback: typeof getGlobalThis().cancelIdleCallback = - getGlobalThis().cancelIdleCallback || - (id => { - clearTimeout(id) - }) +// see https://caniuse.com/requestidlecallback +const requestIdleCallback: Window['requestIdleCallback'] = + getGlobalThis().requestIdleCallback || (cb => setTimeout(cb, 1)) +const cancelIdleCallback: Window['cancelIdleCallback'] = + getGlobalThis().cancelIdleCallback || (id => clearTimeout(id)) /** * A lazy hydration strategy for async components.