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

@hadeeb/trpc-worker

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hadeeb/trpc-worker

Run tRPC in a web worker

latest
Source
npmnpm
Version
0.1.0
Version published
Maintainers
1
Created
Source

tRPC in a Worker

Run tRPC in a web worker / electron main thread

Thin wrapper(<1kb min+gzip) around tRPC's websocket link & adapter

Web Worker

Worker thread

import { applyWSSHandler } from "@trpc/server/adapters/ws";
import { createWorkerServer } from "@hadeeb/trpc-worker/adapter";
import { appRouter } from "../path/to/router";
import { createContext } from "../path/to/context";

applyWSSHandler({
  router: appRouter,
  createContext,
  wss: createWorkerServer({ worker: self }),
});

Main thread

import { createTRPCProxyClient, wsLink } from "@trpc/client";
import { createWorkerClient } from "@hadeeb/trpc-worker/link";
import type { AppRouter } from "../path/to/server/trpc";

const worker = new Worker("../path/to/trpc/worker");
const client = createTRPCProxyClient<AppRouter>({
  links: [
    wsLink({
      client: createWorkerClient({ worker }),
    }),
  ],
});

Electron

Main Process

import { ipcMain } from "electron";
import { createElectronServer } from "@hadeeb/trpc-worker/adapter";

applyWSSHandler({
  router: appRouter,
  createContext,
  wss: createElectronServer({ ipcMain }),
});

Preload script

import { ipcRenderer } from "electron";
import { trpcElectronPreload } from "@hadeeb/trpc-worker/adapter";

trpcElectronPreload({ ipcRenderer });

Browser script

const client = createTRPCProxyClient<AppRouter>({
  links: [
    wsLink({
      client: createWorkerClient({ worker: window }),
    }),
  ],
});

:warning: Caveats

While running in browser, you may have to disable server-side checks in tRPC.

const t = initTRPC.create({
  isServer: false,
  allowOutsideOfServer: true,
});

:warning: Compatibility with tRPC Updates

This depends on the internals of default tRPC Websocket link & ws adapter.

It helps keep the implementation very light.

However, it may break with tRPC patch updates.

Please check before updating tRPC.

Keywords

trpc

FAQs

Package last updated on 23 Mar 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