diff --git a/src/module.ts b/src/module.ts index b9d4d85..ade91b8 100644 --- a/src/module.ts +++ b/src/module.ts @@ -2,7 +2,7 @@ import { fileURLToPath } from 'url' import { join, resolve } from 'pathe' import { defu } from 'defu' -import { addPluginTemplate, addServerHandler, addTemplate, defineNuxtModule } from '@nuxt/kit' +import { addPlugin, addServerHandler, addTemplate, defineNuxtModule } from '@nuxt/kit' export interface ModuleOptions { baseURL: string @@ -33,7 +33,7 @@ export default defineNuxtModule({ nuxt.hook('autoImports:extend', (imports) => { imports.push( - { name: 'useClient', from: '#build/trpc-client' }, + { name: 'useClient', from: join(runtimeDir, 'client') }, { name: 'useAsyncQuery', from: join(runtimeDir, 'client') }, ) }) @@ -43,26 +43,7 @@ export default defineNuxtModule({ handler: handlerPath, }) - addTemplate({ - filename: 'trpc-client.ts', - write: true, - getContents() { - return ` - export const useClient = () => { - const { $client } = useNuxtApp() - return $client - } - ` - }, - }) - - addPluginTemplate({ - src: resolve(runtimeDir, 'plugin.ts'), - write: true, - options: { - url: `${finalConfig.baseURL}${finalConfig.trpcURL}`, - }, - }) + addPlugin(resolve(runtimeDir, 'plugin')) addTemplate({ filename: 'trpc-handler.ts', diff --git a/src/runtime/client.ts b/src/runtime/client.ts index 2280e47..c1f4fc2 100644 --- a/src/runtime/client.ts +++ b/src/runtime/client.ts @@ -58,3 +58,8 @@ export async function useAsyncQuery< error: serverError, } as any } + +export function useClient() { + const { $client } = useNuxtApp() + return $client +} diff --git a/src/runtime/plugin.ts b/src/runtime/plugin.ts index 25721df..2d03f45 100644 --- a/src/runtime/plugin.ts +++ b/src/runtime/plugin.ts @@ -1,12 +1,13 @@ import * as trpc from '@trpc/client' -import { defineNuxtPlugin, useRequestHeaders } from '#app' +// @ts-expect-error: Resolved by Nuxt +import { defineNuxtPlugin, useRequestHeaders, useRuntimeConfig } from '#app' +// @ts-expect-error: Resolved by Nuxt import type { router } from '~/server/trpc' -const options = JSON.parse('<%= JSON.stringify(options) %>') - export default defineNuxtPlugin(() => { + const config = useRuntimeConfig().public.trpc const client = trpc.createTRPCClient({ - url: options.url as string, + url: `${config.baseURL}${config.trpcURL}`, headers: useRequestHeaders(), })