@@ -32,8 +32,9 @@ export class DefaultRefreshHandler implements RefreshHandler {
3232
3333 const { enablePeriodically } = this . config
3434
35- if ( enablePeriodically !== false ) {
36- const intervalTime = enablePeriodically === true ? 1000 : enablePeriodically
35+ if ( enablePeriodically !== false && enablePeriodically !== undefined ) {
36+ const intervalTime = enablePeriodically === true ? 1000 : safeTimerDelay ( enablePeriodically )
37+
3738 this . refetchIntervalTimer = setInterval ( ( ) => {
3839 if ( this . auth ?. data . value ) {
3940 this . auth . refresh ( )
@@ -43,7 +44,7 @@ export class DefaultRefreshHandler implements RefreshHandler {
4344
4445 const provider = this . runtimeConfig . provider
4546 if ( provider . type === 'local' && provider . refresh . isEnabled && provider . refresh . token ?. maxAgeInSeconds ) {
46- const intervalTime = provider . refresh . token . maxAgeInSeconds * 1000
47+ const intervalTime = safeTimerDelay ( provider . refresh . token . maxAgeInSeconds * 1000 )
4748
4849 this . refreshTokenIntervalTimer = setInterval ( ( ) => {
4950 if ( this . auth ?. refreshToken . value ) {
@@ -79,3 +80,10 @@ export class DefaultRefreshHandler implements RefreshHandler {
7980 }
8081 }
8182}
83+
84+ // Fix for https://github.com/sidebase/nuxt-auth/issues/1014
85+ // See https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval#return_value
86+ const MAX_SAFE_INTERVAL_MS = 2147483647
87+ function safeTimerDelay ( milliseconds : number ) : number {
88+ return Math . min ( milliseconds , MAX_SAFE_INTERVAL_MS )
89+ }
0 commit comments