GoogleChromeLabs / comlink

Comlink makes WebWorkers enjoyable.
Apache License 2.0
11k stars 382 forks source link

"Proxy" is a loaded term in the docs. Should be named `Remote` when referring to symbol methods #630

Open ivancuric opened 1 year ago

ivancuric commented 1 year ago

Every proxy created by Comlink has the [releaseProxy]() method. Calling it will detach the proxy and the exposed object from the message channel, allowing both ends to be garbage collected.

However this isn't true. This won't work:

import { proxy, releaseProxy } from "comlink";

const proxied = proxy({});
proxy[releaseProxy]();

One would think that the return type of a proxy function would count as a proxy, but it's not.

Only Remote types have the ProxyMethods on them: https://github.com/GoogleChromeLabs/comlink/blob/main/src/comlink.ts#LL138C8-L138C8

The docs should maybe say that every Remote created by a wrap has a [releaseProxy]() method.

surma commented 1 year ago

wrap() is what returns a proxy. `proxy() is just a marker function that says a value should be proxied across the boundary. You are right that the docs should be better here. I actually like the idea of adding types to the docs and using the type names to disambiguate.