Skip to content

JS API Reference ​

qzjs provides a WinterTC-compatible JavaScript API. The globals listed here are available in any JS that runs in the runtime (initial_script, message handlers, and code invoked via qz_post_message), without requiring require() or import.

Architecture ​

API Categories ​

APIs fall into three groups by the standard they come from.

WinterTC (WinterCG standard) ​

The WinterCG-compatible subset of Web APIs qzjs implements.

APIGlobal
consoleconsole
performanceperformance
timerssetTimeout, setInterval, clearTimeout, clearInterval
EventTargetEventTarget, Event, CustomEvent, ErrorEvent
AbortControllerAbortController, AbortSignal, DOMException
URLURL, URLSearchParams, URLPattern
fetchfetch, Headers, Request, Response
cryptocrypto, crypto.subtle
streamsReadableStream, WritableStream, TransformStream
compressCompressionStream, DecompressionStream
TextEncoderTextEncoder, TextDecoder
Blob / File / FormDataBlob, File, FormData
structuredClonestructuredClone
MessageChannelMessageChannel, MessagePort
WorkerWorker
navigatornavigator

W3C APIs ​

Browser-standard APIs beyond the WinterCG core.

APIGlobal
WebSocketWebSocket
BroadcastChannelBroadcastChannel
EventSourceEventSource
CacheStoragecaches, CacheStorage, Cache
Service Workernavigator.serviceWorker
localStoragelocalStorage, sessionStorage

qzjs Platform Extensions ​

qzjs-specific APIs, not part of any Web standard. Their style is close to Node.js but they are not Node APIs (process, require, Buffer are absent).

APIGlobalNotes
fsqzjs.fsFilesystem operations
storageqzjs.storageKey-value storage
serveserve()HTTP / WebSocket / gRPC server
grpcgrpcgRPC client + server (QZ_WITH_GRPC=ON)

Standards Compliance ​

qzjs targets WinterTC compatibility — the same subset of Web APIs used by Cloudflare Workers, Deno, and other server-side runtimes. DOM-specific APIs (document, window, HTMLElement) are intentionally excluded.

Not Included ​

These browser APIs are explicitly excluded:

  • DOM: document, window, HTMLElement, addEventListener on globals
  • CSS: CSSStyleSheet, getComputedStyle, CSSOM
  • Layout: requestAnimationFrame, IntersectionObserver, ResizeObserver
  • Media: WebRTC, AudioContext
  • Storage: indexedDB (use qzjs.storage)

Usage ​

All globals are available immediately — no imports needed:

js
// Core APIs
console.log('Hello from qzjs');
setTimeout(() => console.log('tick'), 1000);

// fetch with streaming
let response = await fetch('https://example.com/data.json');
let data = await response.json();

// crypto
let bytes = crypto.getRandomValues(new Uint8Array(32));
let hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode('hello'));

// URL parsing
let url = new URL('https://example.com/path?key=value');
console.log(url.searchParams.get('key')); // "value"

// Filesystem (platform extension)
let content = await qzjs.fs.read('/app/config.json');

// Storage (platform extension)
await qzjs.storage.set('session_token', 'abc123');

MIT Licensed