Coder Social home page Coder Social logo

lesomnus / grpc-concierge Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 107 KB

gRPC tranport for caching, deduplication, and managing life cycle

License: Apache License 2.0

Shell 1.58% Dockerfile 3.20% TypeScript 95.22%
cache deduplication grpc grpc-typescript react

grpc-concierge's Introduction

gcpc-concierge

gRPC transport on top of timostamm/protobuf-ts that helps you to cache, deduplicate, and abort the request.

Usage

Currently only unary call is supported.

Cache and Deduplication

import { GrpcWebFetchTransport } from '@protobuf-ts/grpcweb-transport'
import { Cacher, Hitchhiker } from 'grpc-concierge'

import { IEchoClient } from './pb/echo.client'

const transport = new GrpcWebFetchTransport({
	baseUrl: 'https://example.com',
	interceptors: [
		new Cacher<IEchoClient>(({ byKey })=>({
			// Cached value will be returned if `msg.value` is same.
			hello: byKey(msg => msg.value)
		})),
		new Hitchhiker<IEchoClient>(({ byKey }) => ({
			// Request that has the same `msg.value` are processed as a single request.
			hello: byKey(msg => msg.value)
		})),
	],
})

React Hook

  • Re-rendering the component when the dependent RPC succeeds.
  • Abort RPCs used when the component unmounted.
import { createServiceContext } from 'grpc-concierge/react'

import { EchoClient } from './pb/echo.client'

const [ctx, useService] = createServiceContext({
	echo: EchoClient
}, {
	// `echo.hello` depends on `echo.hola`.
	echo: {
		hello: {
			echo: ['hola']
		}
	}
})

// This component rerendered whenever `svc.echo.hola` succeeds.
function EchoComponent(){
	const svc = useService()
	svc.echo.hello()
	return <>...</>
}

You can see more examples at test.

grpc-concierge's People

Contributors

lesomnus avatar

Watchers

 avatar  avatar

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.