diff --git a/src/module.ts b/src/module.ts index 83bb3f8..42680af 100644 --- a/src/module.ts +++ b/src/module.ts @@ -78,6 +78,12 @@ export default defineNuxtModule({ ` }, }) + + addTemplate({ + filename: 'trpc-helpers.ts', + write: true, + src: join(runtimeDir, 'helpers.ts'), + }) }, }) diff --git a/src/runtime/helpers.ts b/src/runtime/helpers.ts new file mode 100644 index 0000000..2379fd6 --- /dev/null +++ b/src/runtime/helpers.ts @@ -0,0 +1,73 @@ +import type { inferProcedureInput, inferProcedureOutput, inferSubscriptionOutput } from '@trpc/server' +import type { router } from '~/server/trpc' + +/** + * The main router type + */ +export type AppRouter = typeof router + +/** + * Enum containing all api query paths + */ +export type TQuery = keyof AppRouter['_def']['queries'] + +/** + * Enum containing all api mutation paths + */ +export type TMutation = keyof AppRouter['_def']['mutations'] + +/** + * Enum containing all api subscription paths + */ +export type TSubscription = keyof AppRouter['_def']['subscriptions'] + +/** + * This is a helper method to infer the output of a query resolver + * @example type HelloOutput = InferQueryOutput<'hello'> + */ +export type InferQueryOutput = inferProcedureOutput< + AppRouter['_def']['queries'][TRouteKey] +> + +/** + * This is a helper method to infer the input of a query resolver + * @example type HelloInput = InferQueryInput<'hello'> + */ +export type InferQueryInput = inferProcedureInput< + AppRouter['_def']['queries'][TRouteKey] +> + +/** + * This is a helper method to infer the output of a mutation resolver + * @example type HelloOutput = InferMutationOutput<'hello'> + */ +export type InferMutationOutput = + inferProcedureOutput + +/** + * This is a helper method to infer the input of a mutation resolver + * @example type HelloInput = InferMutationInput<'hello'> + */ +export type InferMutationInput = + inferProcedureInput + +/** + * This is a helper method to infer the output of a subscription resolver + * @example type HelloOutput = InferSubscriptionOutput<'hello'> + */ +export type InferSubscriptionOutput = + inferProcedureOutput + +/** + * This is a helper method to infer the asynchronous output of a subscription resolver + * @example type HelloAsyncOutput = InferAsyncSubscriptionOutput<'hello'> + */ +export type InferAsyncSubscriptionOutput = + inferSubscriptionOutput + +/** + * This is a helper method to infer the input of a subscription resolver + * @example type HelloInput = InferSubscriptionInput<'hello'> + */ +export type InferSubscriptionInput = + inferProcedureInput