New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@magic-rpc/client

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@magic-rpc/client

Magic RPC client for type-safe RPC calls

latest
npmnpm
Version
1.3.0
Version published
Maintainers
1
Created
Source

@magic-rpc/client

Type-safe client for making Magic RPC calls with support for field selection and automatic batching.

Installation

npm install @magic-rpc/client

Usage

Basic Client

import { RpcClient } from "@magic-rpc/client";

const client = new RpcClient({
  baseUrl: "http://localhost:3000/json-rpc",
  timeout: 5000,
  headers: {
    Authorization: "Bearer token",
  },
});

// Make RPC calls
const user = await client.call({
  method: "getUser",
  input: { userId: "123" },
  mappings: {
    avatar: 1,
    posts: { comments: 1 },
  },
});

// Batch multiple calls
const results = await client.batch([
  { method: "getUser", input: { userId: "1" } },
  { method: "getUser", input: { userId: "2" } },
]);

Type-Safe Client

import { createTypedClient } from "@magic-rpc/client";

// Define your schema (shared with server)
const schema = {
  getUser: [GetUserInputSchema, GetUserOutputSchema],
  getUserPosts: [GetPostsInputSchema, GetPostsOutputSchema],
};

const client = createTypedClient(schema, {
  baseUrl: "http://localhost:3000/json-rpc",
});

// Fully typed method calls
const user = await client.getUser(
  { userId: "123" }, // Typed input
  { avatar: 1, posts: 1 } // Optional field mappings
);

Features

  • Type Safety: Full TypeScript support with inferred types
  • Field Selection: Specify which nested fields to resolve
  • Automatic Batching: Batch multiple requests efficiently
  • Error Handling: Proper error propagation from server
  • Timeout Support: Configurable request timeouts
  • Custom Headers: Support for authentication and custom headers

API Reference

RpcClient

class RpcClient {
  constructor(config: RpcClientConfig);
  call<T>(request: RpcRequest): Promise<T>;
  batch<T>(requests: RpcRequest[]): Promise<T[]>;
}

createTypedClient

function createTypedClient<TSchema>(
  schema: TSchema,
  config: RpcClientConfig
): TypedRpcClient<TSchema>;

Types

interface RpcClientConfig {
  baseUrl: string;
  timeout?: number;
  headers?: Record<string, string>;
}

interface RpcRequest {
  method: string;
  input: any;
  mappings?: Record<string, any>;
}

Keywords

rpc

FAQs

Package last updated on 30 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts