capnweb 0.0.0-db952ec → 0.0.0-e0d2f1d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/index-workers.cjs +803 -36
- package/dist/index-workers.cjs.map +1 -1
- package/dist/index-workers.js +803 -36
- package/dist/index-workers.js.map +1 -1
- package/dist/index.cjs +803 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +803 -36
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -201,13 +201,13 @@ The following types can be passed over RPC (in arguments or return values), and
|
|
|
201
201
|
* `Date`
|
|
202
202
|
* `Uint8Array`
|
|
203
203
|
* `Error` and its well-known subclasses
|
|
204
|
+
* `ReadableStream` and `WritableStream`, with automatic flow control.
|
|
205
|
+
* `Headers`, `Request`, and `Response` from the Fetch API.
|
|
204
206
|
|
|
205
207
|
The following types are not supported as of this writing, but may be added in the future:
|
|
206
208
|
* `Map` and `Set`
|
|
207
209
|
* `ArrayBuffer` and typed arrays other than `Uint8Array`
|
|
208
210
|
* `RegExp`
|
|
209
|
-
* `ReadableStream` and `WritableStream`, with automatic flow control.
|
|
210
|
-
* `Headers`, `Request`, and `Response`
|
|
211
211
|
|
|
212
212
|
The following are intentionally NOT supported:
|
|
213
213
|
* Application-defined classes that do not extend `RpcTarget`.
|
|
@@ -305,6 +305,10 @@ The trick here is record-replay: On the calling side, Cap'n Web will invoke your
|
|
|
305
305
|
|
|
306
306
|
Since all of the not-yet-determined values seen by the callback are represented as `RpcPromise`s, the callback's behavior is deterministic. Any actual computation (arithmetic, branching, etc.) can't possibly use these promises as (meaningful) inputs, so would logically produce the same results for every invocation of the callback. Any such computation will actually end up being performed on the sending side, just once, with the results being imbued into the recording.
|
|
307
307
|
|
|
308
|
+
### Streaming with flow control
|
|
309
|
+
|
|
310
|
+
You may pass a `ReadableStream` or `WritableStream` over RPC. When doing so, the RPC system automatically creates an equivalent stream at the other end and pumps bytes (or arbitrarily-typed chunks) across. This is done in such a way as to ensure the available bandwidth is fully utilized while minimizing buffer bloat, by observing the bandwidth-delay product and applying backpressure when too much is written. Multiple streams can be sent across the same connection -- they will be multiplexed appropriately, similar to HTTP/2 stream multiplexing.
|
|
311
|
+
|
|
308
312
|
### Cloudflare Workers RPC interoperability
|
|
309
313
|
|
|
310
314
|
Cap'n Web works on any JavaScript platform. But, on Cloudflare Workers specifically, it's designed to play nicely with the [the built-in RPC system](https://blog.cloudflare.com/javascript-native-rpc/). The two have basically the same semantics, the only difference being that Workers RPC is a built-in API provided by the Workers Runtime, whereas Cap'n Web is implemented in pure JavaScript.
|