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

@rrequire/client

v0.0.6

Published

rrequire client for browser environments

Downloads

11

Readme

See full documentation in the repo: https://github.com/MikeShi42/rrequire

rrequire logo

why rrequire?

The 🚀 fastest ⚡️ way for web apps to start talking to servers. Connect your frontend to your backend with just 3 lines of code and zero configuration.

Enjoy familiar node module export syntax and ES6 import syntax to make your remote calls.

Warning: This package is still experimental and the API may change in-between minor versions.

Getting Started

Web Client

The rrequire client allows for easy calls from a web browser to a remote server implementing the JSON-RPC protocol (such as the @rrequire/server).

Install from npm:

npm install @rrequire/client

'Import' a remote function for use:

import rrequire from '@rrequire/client';

const { add } = rrequire('server/module');

async function myClientMethod(x) {
  console.log(await add(x, 5));
}

By default, rrequire will try to send requests to the current host (/).

All functions return Promises that will resolve to the value that's returned by the remote procedure (or reject if a problem occurs). It's recommended to use the async/await syntax for more concise code.

Note: As of this time, module names are not used to scope function imports.

Configuration

Import the config function to globally set configs for future RPC requests.

import rrequire, { config } from '@rrequire/client';

config({ remoteLocation: 'http://localhost:8080' });

Config Options

Key | Type | Default | Description --- | --- | --- | --- remoteLocation | String | / | URL of the JSON-RPC server.

Advanced Usage: Avoiding ES6 Proxy

The usage of Proxy in production can cause problems for browsers that do not yet support Proxy. The Proxy object is used to magically catch all property references at run time (ex. module.function), allowing for easy ES6-like import syntax and minimal overhead. Since there is no polyfill for Proxy, you must instead explicitly define which functions you expect to import from the remote server.

By passing in an array of function names into the rrequire function call, rrequire avoids using Proxy and creates a static object with all functions pre-defined according to the array.

Example

const {
    add,
    subtract,
} = rrequire('server/module', [
    // This array specifies which function names we're importing
    // It should match the above properties
    'add',
    'subtract',
]);