Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/depot/connectrpc-workers

A Connect RPC adapter for Cloudflare Workers
https://github.com/depot/connectrpc-workers

cloudflare cloudflare-workers connectrpc

Last synced: 2 months ago
JSON representation

A Connect RPC adapter for Cloudflare Workers

Awesome Lists containing this project

README

        

# `@depot/connectrpc-workers`

[![CI](https://github.com/depot/connectrpc-workers/actions/workflows/ci.yml/badge.svg)](https://github.com/depot/connectrpc-workers/actions/workflows/ci.yml)
[![npm](https://img.shields.io/npm/v/@depot/connectrpc-workers.svg)](https://www.npmjs.com/package/@depot/connectrpc-workers)
![Powered by TypeScript](https://img.shields.io/badge/powered%20by-typescript-blue.svg)

A [Connect RPC](https://connectrpc.com/) adapter for [Cloudflare Workers](https://workers.cloudflare.com/).

## Installation

You can install the module with your favorite package manager:

```bash
pnpm add @depot/connectrpc-workers
```

This package depends on the peer dependencies `@connectrpc/connect` and `@cloudflare/workers-types`.

## Usage

You can construct a function to register handlers for your Connect services, then construct a Cloudflare Workers fetch event handler from those routes:

```typescript
import type {ConnectRouter} from '@connectrpc/connect'
import {connectWorkersAdapter} from '@depot/connectrpc-workers'

function routes(router: ConnectRouter) {
// implement rpc Say(SayRequest) returns (SayResponse)
router.rpc(ElizaService, ElizaService.methods.say, async (req) => ({
sentence: `you said: ${req.sentence}`,
}))
}

const handler = connectWorkersAdapter({routes})

export default {
fetch(request, env, context) {
return handler(request, env, context)
},
} satisfies ExportedHandler
```

## License

MIT License, see `LICENSE`.