Git Product home page Git Product logo

usetrpc's Introduction

useTRPC

A composables Vue 3 library for using a tRPC.io client, bringing end-to-end typesafe APIs to Vue 3.

Please reference the tRPC documenation (https://trpc.io/docs/)[https://trpc.io/docs/] before using this library.

N.B. This library is a work in progress and is not yet ready for usage in production.

Installation

npm install @trpc/vue

or

yarn(pnpm) add @trpc/vue

Then, you can simply import what you need:

import { useTRPCClient, useTRPCQuery, useTRPCMutation } from '@trpc/vue'

Usage

Define AppRouter

Be sure to define a tRPC router of type AppRputer, e.g.:

import * as trpc from '@trpc/server';

export const appRouter = trpc
  .router<Context>()
  .query('all', {
    resolve({ ctx }) {
      return {
        greeting: `world`,
      };
    },
  });
  
export type AppRouter = typeof appRouter

Please see https://trpc.io/docs/router for further explanation of defining the router and the AppRouter type.

Instantiating a tRPC client:

import { useTRPCClient } from '@trpc/vue'

// import your router, e.g.:
import type { AppRouter } from './server/router'

const { client } = useTRPCClient<AppRouter>({
  url: 'http://localhost:3000/trpc'
})

Making a tRPC Query

import { TRPCClient } from '@trpc/client'

import type { AppRouter } from '@observerly/pleiades'

import { useTRPCQuery } from '@trpc/vue'

export const useTelescopes = (client: TRPCClient<AppRouter>) => {
  const telescopes = useTRPCQuery(client, ['telescopes.all'])

  return {
    telescopes
  }
}

To-Do

  • Publish as npm public package
  • Add useClient() composable
  • Add comprehensive usage tests for useClient()
  • Add useQuery() composable
  • Improve type inference for useQuery()
  • Add comprehensive usage tests for useQuery()
  • Add useMutation()
  • Add comprehensive usage tests for useMutation()
  • Add useSubscription()
  • Add comprehensive usage tests for useSubscription()
  • Add usage documentation and demo examples.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.