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

@dcl/social-rpc-client

v1.0.0

Published

Decentraland Social RPC Client

Downloads

34

Readme

The Decentraland Social Service JS Client is a Websocket client which uses the DCL RPC protocol to communicate with the Decentraland Social Service.

Collaboration

Setting up the development environment

In order to build the client, you'll need to have Node.js and Protocol Buffers installed.

Installing the dependencies

Run the NPM install command to install all the dependencies needed to run the project.

npm install

Building the client

Run the NPM build command to build the client.

npm build

This command will:

  1. Compile the protocol buffer's definitions for the RPC protocol of the Social Service, generating the corresponding TypeScript definitions.
  2. Compile the TypeScript code of the client.

A distributable will be generated in the dist folder, containing all the client's code and types.

Using the client

Basic setup and usage

To use the client, install the package in your NPM project:

npm install -S @dcl/social-rpc-client

Import the client creator function from the installed package:

import { createSocialClient } from "@dcl/social-client";

Create a new client instance by providing the client with:

  1. A URL to the Social Service's REST API
  2. A URL to the Social Service's Websocket endpoint
  3. The user's address (the same as the one used to sign the identity)
  4. An identity, signed with the user's wallet.
import { createSocialClient } from "@dcl/social-client";
import { Wallet } from 'ethers'

// Generate a random wallet for testing purposes or use the user's one in production environments.
const wallet = Wallet.createRandom()
const identity = await createIdentity(wallet, expiration)

const socialClient = await createSocialClient(
  "https://social.decentraland.org",
  "wss://social-service.decentraland.org",
  wallet.address,
  identity
);

The createSocialClient will connect perform the required operations to connect to the Social Service and will return the connected client.

Use the client to interact with the Social Service:

import { createSocialClient } from "@dcl/social-client";

const socialClient = await createSocialClient(
  "https://social.decentraland.org",
  "wss://social-service.decentraland.org",
  wallet.address,
  identity
);

const friends = socialClient.getFriends()
for await (const friend of friends) {
  console.log(friend)
}

The client exposes the methods available through the social protobuff and a disconnect method which disconnects the client from the Social Service.

Generating an identity

To authenticate users with the Social Service, you'll need to generate an identity for them. To do so, the @dcl/crypto library provides the Authenticator.initializeAuthChain method. Use it to generate an identity for your users:

  import { Wallet } from 'ethers'
  import { Authenticator } from '@dcl/crypto'
  // Generate a random wallet for testing purposes or use the user's one in production environments.
  const userWallet = Wallet.createRandom()

  // Generate an identity for the user.
  const address = await userWallet.getAddress()
  const ephemeralWallet = Wallet.createRandom()
  const payload = {
    address: ephemeralWallet.address,
    privateKey: ephemeralWallet.privateKey,
    publicKey: ephemeralWallet.publicKey
  }
  const identity = await Authenticator.initializeAuthChain(address, payload, expiration, (message: string) => signer.signMessage(message))