-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvue-app.ts
36 lines (28 loc) · 897 Bytes
/
vue-app.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { VueQueryPlugin, useQueryClient } from '@tanstack/vue-query'
import { httpBatchLink } from '@trpc/client'
import { createApp, inject } from 'vue'
import { createTRPCVueQueryClient } from '../src/index'
import type { AppRouter } from './trpc/index'
import type { InjectionKey } from 'vue'
const trpcKey = Symbol('trpc') as InjectionKey<
ReturnType<typeof createTRPCVueQueryClient<AppRouter>>
>
export const app = createApp({})
app.use(VueQueryPlugin)
app.use({
install() {
const queryClient = app.runWithContext(useQueryClient)
const trpc = createTRPCVueQueryClient<AppRouter>({
queryClient,
trpc: {
links: [httpBatchLink({ url: 'http://localhost:3000' })],
},
})
app.provide(trpcKey, trpc)
},
})
export function useTRPC() {
const trpc = inject(trpcKey)
if (!trpc) throw new Error('tRPC client is not available.')
return trpc
}