npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@neko-gong/simple-rpc

v0.0.2

Published

An easy-to-use RPC tool that makes remote function calls as seamless as local ones, eliminating the need for RESTful APIs.

Downloads

8

Readme

Simple RPC

Introduction

The Simple RPC is a Node.js framework which simplifies the process of creating web servers and minimizes the communication efforts. With Simple RPC, you can invoke server-side functions from your client as if they were local, eliminating the need for RESTful APIs.

To get more information, please refer to the documentation.

Features and Highlights

  • With async/await, the RPC framework is very easy to use.
  • The serialization algorithm allows you to pass data of common types that JSON.stringify cannot handle, such as undefined, Date, RegExp, Infinity, Set, Map, and more.
  • The serialization algorithm allows you to pass data with circular properties.
  • The RPC framework allows you to upload or download files.
  • The RPC framework allows you to add authorization, end, or error handling middlewares.
  • The RPC framework allows you to add static pages and handle CORS.
  • The RPC framework is implemented in JavaScript and is quite lightweight, not relying on any other third-party libraries.

Installation (Server or Client)

npm install @neko-gong/simple-rpc

Quick Start

Server

For the server side, both ESM and CJS are supported.

Assume you have a folder named rpc where all the modules you want to expose to the client are located.

The file structure should be like this:

project/
  ├── rpc/
  │   ├── user.js
  │   └── file.js
  └── server.js

In the file server.js, you can use the following code to create a server:

import { createServer } from '@neko-gong/simple-rpc'

const server = createServer()
server.useRpc('./rpc')

await server.start()

In the file rpc/user.js, you can create several exported functions:

export const getById = id => {
    return { id, name: 'John' }
}

export const add = async user => {
    await new Promise(resolve => setTimeout(resolve, 5000))
    return user
}

Client

For the client side, you can use Node.js (ESM or CJS) or browser (ESM or UMD).

import client from '@neko-gong/simple-rpc/client'

client.settings.host = 'http://localhost:8080'

let user = await client.user.getById(1)
console.log(user)

user = await client.user.add({ id: 2, name: 'Jane' })
console.log(user)

For using UMD, access the global variable simpleRpcClient:

<script src="node_modules/@neko-gong/simple-rpc/dist/client-umd.js"></script>
const client = simpleRpcClient.default

const user = await client.user.getById(1)
console.log(user)

To get more information about how Simple RPC is used and implemented, please refer to the documentation.