Skip to content

Utilities

function createTypedEventTarget<T>(): TypedEventTarget<T>

Defined in: utils/typed-event-target.ts:37

Create a new TypedEventTarget<T> for a given event map. Centralises the EventTargetTypedEventTarget<T> cast so individual call sites don’t each need their own (EventTarget lacks the generic event map at the type level, but the runtime behaviour is identical).

T extends EventMap

TypedEventTarget<T>


Guide: Low-level API

function getTransferableObjects(value: unknown): Transferable[]

Defined in: utils/transferable.ts:33

Walk a boxed message and collect Transferables to move (rather than copy) on postMessage:

  1. Must-transfer types are always included.
  2. Clonable types (SharedArrayBuffer) are skipped.
  3. Other Transferables are included only inside a non-degraded transfer box (user opted in AND the platform supports transferring).

unknown

Transferable[]


function isTornDown(scope: WeakKey): boolean

Defined in: utils/teardown.ts:23

Whether a scope’s teardown has already run. Callers use this to REFUSE work rather than start it: onTeardown against a dead scope runs the callback immediately, which is a footgun inside an initializer, and anything registered afterwards is state no teardown will ever visit again.

WeakKey

boolean


function onTeardown(scope: WeakKey, fn: () => void): () => void

Defined in: utils/teardown.ts:9

WeakKey

() => void

() => void


function trackGc(target: WeakKey, cleanup: () => void): GcUnregister

Defined in: utils/gc-tracker.ts:25

WeakKey

() => void

GcUnregister

Defined in: utils/event-channel.ts:130

T1 = unknown

T2 = unknown

new EventChannel<T1, T2>(): EventChannel<T1, T2>;

Defined in: utils/event-channel.ts:134

EventChannel<T1, T2>

readonly port1: EventPort<T1>;

Defined in: utils/event-channel.ts:131

readonly port2: EventPort<T2>;

Defined in: utils/event-channel.ts:132


Defined in: utils/event-channel.ts:6

T

get onmessage():
| ((this: MessagePort, ev: MessageEvent<T>) => unknown)
| null;

Defined in: utils/event-channel.ts:60

| ((this: MessagePort, ev: MessageEvent<T>) => unknown) | null

set onmessage(value:
| ((this: MessagePort, ev: MessageEvent<T>) => unknown)
| null): void;

Defined in: utils/event-channel.ts:63

| ((this: MessagePort, ev: MessageEvent<T>) => unknown) | null

void

new EventPort<T>(): EventPort<T>;

EventPort<T>

addEventListener<K>(
type: K,
listener:
| ((event: TypedMessagePortEventMap<T>[K]) => void)
| null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/event-channel.ts:10

K extends "close" | "message" | "messageerror"

K

| ((event: TypedMessagePortEventMap<T>[K]) => void) | null

boolean | AddEventListenerOptions

void

addEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/event-channel.ts:15

string

EventListenerOrEventListenerObject | null

boolean | AddEventListenerOptions

void

close(): void;

Defined in: utils/event-channel.ts:109

void

dispatchEvent(event: Event): boolean;

Defined in: utils/event-channel.ts:70

Event

boolean

postMessage(message: T, _options?: Transferable[] | StructuredSerializeOptions): void;

Defined in: utils/event-channel.ts:87

T

Transferable[] | StructuredSerializeOptions

void

removeEventListener<K>(
type: K,
listener:
| ((event: TypedMessagePortEventMap<T>[K]) => void)
| null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/event-channel.ts:33

K extends "close" | "message" | "messageerror"

K

| ((event: TypedMessagePortEventMap<T>[K]) => void) | null

boolean | EventListenerOptions

void

removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/event-channel.ts:38

string

EventListenerOrEventListenerObject | null

boolean | EventListenerOptions

void

start(): void;

Defined in: utils/event-channel.ts:101

void

_closed: boolean = false

Defined in: utils/event-channel.ts:55

_onClose: (() => void) | undefined;

Defined in: utils/event-channel.ts:56

_peer: EventPort<any> | undefined

Defined in: utils/event-channel.ts:52

_queue: MessageEvent<T>[] = [];

Defined in: utils/event-channel.ts:53

_started: boolean = false

Defined in: utils/event-channel.ts:54

optional [UnderlyingType]?: T;

Defined in: utils/typed-message-channel.ts:15

onmessageerror: ((this: MessagePort, ev: MessageEvent) => unknown) | null = null;

Defined in: utils/event-channel.ts:68

Defined in: utils/typed-event-target.ts:5

  • EventTarget

T extends EventMap

addEventListener<K>(
type: K,
listener: ((event: T[K]) => void) | null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/typed-event-target.ts:8

The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.

MDN Reference

K extends string

K

((event: T[K]) => void) | null

boolean | AddEventListenerOptions

void

EventTarget.addEventListener
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/typed-event-target.ts:13

The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.

MDN Reference

string

EventListenerOrEventListenerObject | null

boolean | AddEventListenerOptions

void

EventTarget.addEventListener
removeEventListener<K>(
type: K,
listener: ((event: T[K]) => void) | null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/typed-event-target.ts:19

The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.

MDN Reference

K extends string

K

((event: T[K]) => void) | null

boolean | EventListenerOptions

void

EventTarget.removeEventListener
removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/typed-event-target.ts:24

The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.

MDN Reference

string

EventListenerOrEventListenerObject | null

boolean | EventListenerOptions

void

EventTarget.removeEventListener
optional [UnderlyingType]?: T;

Defined in: utils/typed-event-target.ts:6


Defined in: utils/typed-message-channel.ts:27

T1 = unknown

T2 = unknown

readonly port1: TypedMessagePort<T1>;

Defined in: utils/typed-message-channel.ts:28

readonly port2: TypedMessagePort<T2>;

Defined in: utils/typed-message-channel.ts:29


Defined in: utils/typed-message-channel.ts:10

T = unknown

addEventListener<K>(
type: K,
listener:
| ((event: TypedMessagePortEventMap<T>[K]) => void)
| null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/typed-event-target.ts:8

The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.

MDN Reference

K extends "close" | "message" | "messageerror"

K

| ((event: TypedMessagePortEventMap<T>[K]) => void) | null

boolean | AddEventListenerOptions

void

Omit.addEventListener
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | AddEventListenerOptions): void;

Defined in: utils/typed-event-target.ts:13

The addEventListener() method of the EventTarget interface sets up a function that will be called whenever the specified event is delivered to the target.

MDN Reference

string

EventListenerOrEventListenerObject | null

boolean | AddEventListenerOptions

void

Omit.addEventListener
close(): void;

Defined in: utils/typed-message-channel.ts:24

void

postMessage(message: T, transfer: Transferable[]): void;

Defined in: utils/typed-message-channel.ts:20

T

Transferable[]

void

postMessage(message: T, options?: StructuredSerializeOptions): void;

Defined in: utils/typed-message-channel.ts:21

T

StructuredSerializeOptions

void

removeEventListener<K>(
type: K,
listener:
| ((event: TypedMessagePortEventMap<T>[K]) => void)
| null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/typed-event-target.ts:19

The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.

MDN Reference

K extends "close" | "message" | "messageerror"

K

| ((event: TypedMessagePortEventMap<T>[K]) => void) | null

boolean | EventListenerOptions

void

Omit.removeEventListener
removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject | null,
options?: boolean | EventListenerOptions): void;

Defined in: utils/typed-event-target.ts:24

The removeEventListener() method of the EventTarget interface removes an event listener previously registered with EventTarget.addEventListener() from the target. The event listener to be removed is identified using a combination of the event type, the event listener function itself, and various optional options that may affect the matching process; see Matching event listeners for removal.

MDN Reference

string

EventListenerOrEventListenerObject | null

boolean | EventListenerOptions

void

Omit.removeEventListener
start(): void;

Defined in: utils/typed-message-channel.ts:23

void

optional [UnderlyingType]?: T;

Defined in: utils/typed-message-channel.ts:15

onmessage:
| ((this: MessagePort, ev: MessageEvent<T>) => unknown)
| null;

Defined in: utils/typed-message-channel.ts:17

onmessageerror: ((this: MessagePort, ev: MessageEvent) => unknown) | null

Defined in: utils/typed-message-channel.ts:18

type BadFieldParent<T, TConstraint> =
FindBadField<T, TConstraint> extends {
parent: infer P
}
? P
: T

Defined in: utils/capable-check.ts:62

The immediate parent object/array containing the first non-conforming value. Equals T when the root itself fails.

T

TConstraint


type BadFieldPath<T, TConstraint> =
FindBadField<T, TConstraint> extends {
path: infer P
}
? P
: ''

Defined in: utils/capable-check.ts:55

Dotted/bracketed path to the first non-conforming value (e.g. "a.b[2]"). Empty string if the root itself fails the check.

T

TConstraint


type BadFieldValue<T, TConstraint> =
FindBadField<T, TConstraint> extends {
value: infer V
}
? V
: T

Defined in: utils/capable-check.ts:48

The first non-conforming value found by deep traversal of T against TConstraint. Falls back to T if no traversal is applicable.

T

TConstraint


type DeepReplaceWithBox<T, M> = [FindMatchingBox<T, M>] extends [never] ? T extends infer U[] ? DeepReplaceWithBox<U, M>[] : T extends object ? { [K in keyof T]: DeepReplaceWithBox<T[K], M> } : T : FindMatchingBox<T, M>;

Defined in: utils/replace.ts:11

T

M


type DeepReplaceWithRevive<T, M> = [FindMatchingRevive<T, M>] extends [never] ? T extends infer U[] ? DeepReplaceWithRevive<U, M>[] : T extends object ? { [K in keyof T]: DeepReplaceWithRevive<T[K], M> } : T : FindMatchingRevive<T, M>;

Defined in: utils/replace.ts:23

T

M


type EventMap = Record<string, Event>

Defined in: utils/typed-event-target.ts:3


type GcUnregister = () => void

Defined in: utils/gc-tracker.ts:18

Run cleanup after target is garbage-collected. Returns a handle to cancel the tracking before that happens.

Backed by a single shared FinalizationRegistry - every revivable that needs FR semantics goes through this so the boilerplate (token, unregister, cycle-safety contract) lives in one place.

Contract: cleanup MUST NOT (transitively) reference target. The registry strong-holds the cleanup callback, the cleanup would then strong-hold target, and the engine would never see target as collectable. Use a WeakRef if cleanup needs something that points back at target.

Errors thrown from cleanup are swallowed: the callback fires from the FR thread, where there’s no caller to surface them to.

void


type ReplaceWithBox<T, M> = [FindMatchingBox<T, M>] extends [never] ? T : FindMatchingBox<T, M>

Defined in: utils/replace.ts:6

T

M


type TypedMessagePortEventMap<T> = {
close: Event
message: MessageEvent<T>
messageerror: MessageEvent
}

Defined in: utils/typed-message-channel.ts:4

T = unknown

close: Event

Defined in: utils/typed-message-channel.ts:7

message: MessageEvent<T>

Defined in: utils/typed-message-channel.ts:5

messageerror: MessageEvent

Defined in: utils/typed-message-channel.ts:6


type UnderlyingType = typeof UnderlyingType

Defined in: utils/type.ts:1

const BadValue: unique symbol

Defined in: utils/capable-check.ts:2


const ErrorMessage: unique symbol

Defined in: utils/capable-check.ts:1


const ParentObject: unique symbol

Defined in: utils/capable-check.ts:4


const Path: unique symbol

Defined in: utils/capable-check.ts:3


const UnderlyingType: unique symbol

Defined in: utils/type.ts:1