From 42d16c6454d4bbd25b0725058dae6d0ae2616a9d Mon Sep 17 00:00:00 2001 From: Marsel Shaikhin Date: Thu, 12 Dec 2024 18:56:59 +0100 Subject: [PATCH] fix(#927): fix the warnings produced by Nuxt when awaiting runtime config --- src/runtime/composables/authjs/useAuth.ts | 2 +- src/runtime/composables/local/useAuth.ts | 4 ++-- src/runtime/utils/extractFromRuntimeConfig.ts | 16 ---------------- src/runtime/utils/fetch.ts | 11 ++++++++--- 4 files changed, 11 insertions(+), 22 deletions(-) delete mode 100644 src/runtime/utils/extractFromRuntimeConfig.ts diff --git a/src/runtime/composables/authjs/useAuth.ts b/src/runtime/composables/authjs/useAuth.ts index 85e1279d..28ee7c2a 100644 --- a/src/runtime/composables/authjs/useAuth.ts +++ b/src/runtime/composables/authjs/useAuth.ts @@ -64,7 +64,7 @@ function getCsrfTokenWithNuxt(nuxt: NuxtApp) { type SignInResult = void | { error: string | null, status: number, ok: boolean, url: any } const signIn: SignInFunc = async (provider, options, authorizationParams) => { const nuxt = useNuxtApp() - const runtimeConfig = await callWithNuxt(nuxt, useRuntimeConfig) + const runtimeConfig = useRuntimeConfig() // 1. Lead to error page if no providers are available const configuredProviders = await getProviders() diff --git a/src/runtime/composables/local/useAuth.ts b/src/runtime/composables/local/useAuth.ts index db3e4660..c24ac87b 100644 --- a/src/runtime/composables/local/useAuth.ts +++ b/src/runtime/composables/local/useAuth.ts @@ -17,7 +17,7 @@ type Credentials = { username?: string, email?: string, password?: string } & Re const signIn: SignInFunc = async (credentials, signInOptions, signInParams, signInHeaders) => { const nuxt = useNuxtApp() - const runtimeConfig = await callWithNuxt(nuxt, useRuntimeConfig) + const runtimeConfig = useRuntimeConfig() const config = useTypedBackendConfig(runtimeConfig, 'local') const { path, method } = config.endpoints.signIn const response = await _fetch>(nuxt, path, { @@ -75,7 +75,7 @@ const signIn: SignInFunc = async (credentials, signInOptions, const signOut: SignOutFunc = async (signOutOptions) => { const nuxt = useNuxtApp() - const runtimeConfig = await callWithNuxt(nuxt, useRuntimeConfig) + const runtimeConfig = useRuntimeConfig() const config = useTypedBackendConfig(runtimeConfig, 'local') const { data, token, rawToken, refreshToken, rawRefreshToken }: UseAuthStateReturn = await callWithNuxt(nuxt, useAuthState) diff --git a/src/runtime/utils/extractFromRuntimeConfig.ts b/src/runtime/utils/extractFromRuntimeConfig.ts deleted file mode 100644 index 87daf4a1..00000000 --- a/src/runtime/utils/extractFromRuntimeConfig.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { camelCase } from 'scule' -import type { useRuntimeConfig } from '#imports' - -type RuntimeConfig = ReturnType - -export function extractFromRuntimeConfig(config: RuntimeConfig, envVariableName: string): string | undefined { - let normalized = envVariableName.startsWith('NUXT_') - ? envVariableName.slice(5) - : envVariableName - normalized = camelCase(normalized, { normalize: true }) - - const extracted = config[normalized] - return typeof extracted === 'string' - ? extracted - : undefined -} diff --git a/src/runtime/utils/fetch.ts b/src/runtime/utils/fetch.ts index f1eb8902..5c5ab1bc 100644 --- a/src/runtime/utils/fetch.ts +++ b/src/runtime/utils/fetch.ts @@ -1,10 +1,15 @@ import { resolveApiUrlPath } from './url' import { ERROR_PREFIX } from './logger' -import { callWithNuxt, useRuntimeConfig } from '#app' -import type { useNuxtApp } from '#imports' +import { type useNuxtApp, useRuntimeConfig } from '#imports' +import { callWithNuxt } from '#app/nuxt' export async function _fetch(nuxt: ReturnType, path: string, fetchOptions?: Parameters[1]): Promise { - const runtimeConfig = await callWithNuxt(nuxt, useRuntimeConfig) + // This fixes https://github.com/sidebase/nuxt-auth/issues/927 + const runtimeConfigOrPromise = callWithNuxt(nuxt, useRuntimeConfig) + const runtimeConfig = 'public' in runtimeConfigOrPromise + ? runtimeConfigOrPromise + : await runtimeConfigOrPromise + const joinedPath = resolveApiUrlPath(path, runtimeConfig) // Prevent callback recursion when doing internal routing