Socket
Book a DemoInstallSign in
Socket

@mercuryworkshop/epoxy-tls

Package Overview
Dependencies
Maintainers
6
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mercuryworkshop/epoxy-tls

A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser

latest
Source
npmnpm
Version
2.1.18-1
Version published
Maintainers
6
Created
Source

epoxy-client

Fetch and WebSocket implementation for the browser written in Rust that uses the Wisp protocol.

Building

[!IMPORTANT] Rust nightly with the wasm32-unknown-unknown target and rust-std component is required.

The build script needs some dependencies:

  • wasm-bindgen: installable through cargo
  • wasm-opt: get from WebAssembly/binaryen
  • jq: install from your distro's repos
  • git: install from your distro's repos
bash build.sh

The WASM binary and JS bindings will be placed in pkg.

Usage

Examples are available in demo.js.

import init, { EpoxyClient, EpoxyClientOptions, EpoxyHandlers } from "@mercuryworkshop/epoxy-tls/epoxy";

// you can also pass in the wasm after fetching it. see the typescript types for all options
await init({ module_or_path: "path/to/epoxy.wasm" });

// or you can import "@mercuryworkshop/epoxy-tls" or "@mercuryworkshop/epoxy-tls/epoxy-bundled"
// those versions have the wasm bundled into the JS as base64 so you don't need to pass anything to init()
//
// there is also a minimal version with only HTTP/1 fetch and TLS/TCP/UDP streams if you want a smaller
// bundle size. those can be imported via "@mercuryworkshop/epoxy-tls/minimal" and "minimal-bundled"

const options = new EpoxyClientOptions();
options.user_agent = navigator.userAgent;
options.wisp_v2 = true;
options.udp_extension_required = true;

// use your own selfhosted wisp server, this is the demo one with throttling
const client = new EpoxyClient("wss://wisp.mercurywork.shop", options);

const res = await client.fetch("https://example.com");
console.log(res.headers, res.rawHeaders);
console.log(await res.text());

// not available in the minimal version 
let handlers = new EpoxyHandlers(
    () => console.log("opened"),
    () => console.log("closed"),
    err => console.error(err),
    msg => console.log(`got "${msg}"`)
);
let ws = await client.connect_websocket(
    handlers,
    "wss://echo.websocket.events",
    ["protocol1"],
    { "x-header": "abc" },
);

await ws.send("data");

Keywords

wasm

FAQs

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

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.