New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@bimetal/broker-worker

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bimetal/broker-worker

Web Worker / MessagePort adapter for @bimetal/broker — main↔worker pub/sub. Zero external dependencies.

latest
npmnpm
Version
0.42.0
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

@bimetal/broker-worker

Web Worker / MessagePort adapter for @bimetal/broker — main↔worker pub/sub. Bridge a worker (or any two MessagePort ends) into one broker bus. Zero external dependencies; a thin wrapper over createPortBroker.

Installation

npm install @bimetal/broker-worker @bimetal/broker

Usage

// main thread
import { createWorkerBroker } from '@bimetal/broker-worker';

const worker = new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' });
const broker = createWorkerBroker({ port: worker });

broker.subscribe('worker.progress', (msg) => { ... });
await broker.publish('job.start', { id: 1 });
// inside worker.ts
import { createWorkerBroker } from '@bimetal/broker-worker';

const broker = createWorkerBroker({ port: self });
broker.subscribe('job.start', async (job) => {
  await broker.publish('worker.progress', { id: job.id, pct: 50 });
});

What's Inside

  • createWorkerBroker(options) → a full Broker<TMessage> (plus close()/flush()).
    • port — a Worker (main side), a MessagePort (from a MessageChannel), or self (inside a dedicated worker).
    • onError? — handler-error sink (default console.error).
  • WorkerBrokerOptions, WorkerBroker<TMessage>, WorkerEndpointLike

Adapter properties

  • Capabilities: { patterns: true, replay: false, ordering: 'per-topic' }. A single pipe is FIFO, so messages keep their order; pattern routing (*/#) is done locally on the receiving side.
  • Local + remote in one publish. A Worker/MessagePort never echoes to its own sender, so the relay fans a publish out to local subscribers AND posts across the pipe — both sides hear it, exactly once.
  • Lifecycle is the host's. close() only detaches the message listener; it does not terminate the Worker or close the MessagePort. Terminate/close the endpoint yourself.
  • Structured clone. Messages must be structured-cloneable. Foreign (non-broker) traffic on the port is ignored.

License

Apache License 2.0

Keywords

broker

FAQs

Package last updated on 30 Oct 2026

Related posts