@iameli/xrpc-server
TypeScript icon, indicating that this package has built-in type declarations

0.4.2 • Public • Published

@iameli/xrpc-server: atproto HTTP API server library

TypeScript library for implementing atproto HTTP API services, with Lexicon schema validation.

NPM Github CI Status

Usage

import { LexiconDoc } from '@iameli/lexicon'
import * as xrpc from '@iameli/xrpc-server'
import express from 'express'

const lexicons: LexiconDoc[] = [
  {
    lexicon: 1,
    id: 'io.example.ping',
    defs: {
      main: {
        type: 'query',
        parameters: {
          type: 'params',
          properties: { message: { type: 'string' } },
        },
        output: {
          encoding: 'application/json',
        },
      },
    },
  },
]

// create xrpc server
const server = xrpc.createServer(lexicons)

function ping(ctx: {
  auth: xrpc.HandlerAuth | undefined
  params: xrpc.Params
  input: xrpc.HandlerInput | undefined
  req: express.Request
  res: express.Response
}) {
  return { encoding: 'application/json', body: { message: ctx.params.message } }
}

server.method('io.example.ping', ping)

// mount in express
const app = express()
app.use(server.router)
app.listen(8080)

License

This project is dual-licensed under MIT and Apache 2.0 terms:

Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.

Readme

Keywords

Package Sidebar

Install

npm i @iameli/xrpc-server

Homepage

atproto.com

Weekly Downloads

1

Version

0.4.2

License

MIT

Unpacked Size

5.55 MB

Total Files

54

Last publish

Collaborators

  • iameli