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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@petezah-games/scramjet-controller

v0.1.4

Published

Controller for Scramjet proxy, it manages coordination between application, service workers, and proxy transports

Readme

Scramjet Controller

The controller package manages the coordination between the main application, service workers, and proxy transports in the Scramjet proxy. It handles RPC communication, request routing, and resource management across different execution contexts.

Overview

This package provides the core orchestration layer for Scramjet, enabling:

  • RPC Communication: Two-way RPC communication between the main thread, service workers, and transport layers
  • Request Routing: Handling and forwarding HTTP/HTTPS requests through configured proxy transports
  • Resource Injection: Injecting Scramjet utilities into web pages
  • Service Worker Integration: Managing multiple service worker instances and their lifecycle
  • Cookie Management: Centralized cookie jar for maintaining session state across requests

Structure

Core Modules

  • index.ts - Main Controller class that coordinates between transports and service workers. Handles request processing, frame management, and RPC setup.
  • inject.ts - Injection script that runs in the service worker context. Implements RemoteTransport to communicate back to the main controller via MessagePort.
  • sw.ts - Service worker hooks that manage controller registration, request interception, and service worker lifecycle.
  • types.d.ts - Type definitions for RPC messages and communication interfaces between different contexts.
  • typesEntry.ts - Type entry point for the package exports.

Exports

The package exports three main entry points:

  • @petezah-games/scramjet-controller - Main Controller API
  • @petezah-games/scramjet-controller/inject - Injection utilities for service workers
  • @petezah-games/scramjet-controller/worker - Service worker
  • @petezah-games/scramjet-controller/path - Path to dist

Key Features

Controller Class

The main Controller class manages:

  • Connection to proxy transports
  • Service worker lifecycle and registration
  • Frame management for multiple contexts
  • RPC communication with service workers
  • Request interception and routing via Scramjet

Configuration

Default configuration includes:

  • prefix: /~/sj/ - URL prefix for controller routes
  • virtualWasmPath: scramjet.wasm.js - Virtual path for WASM module
  • injectPath: /controller/controller.inject.js - Path to injection script
  • scramjetPath: /scramjet/scramjet.js - Path to main Scramjet library
  • wasmPath: /scramjet/scramjet.wasm - Path to WASM binary

RPC Methods

The controller exposes RPC methods for:

  • ready - Signals when the service worker is ready
  • request - Processes HTTP requests
  • Additional transport initialization and management

Dependencies

  • @mercuryworkshop/scramjet - Core proxy rewriting library
  • @mercuryworkshop/proxy-transports - Transport abstraction layer
  • @mercuryworkshop/rpc - RPC helper for inter-context communication

Usage

The controller is typically initialized by the bootstrap package, which sets up the service worker registration and injects the controller into the page context. Applications should interact with the controller through the RPC interface for request handling and configuration.