@macula-io/ts 0.17.0 → 0.18.0
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 +109 -272
- package/dist/binding.d.ts +47 -45
- package/dist/binding.js +8 -125
- package/dist/binding.js.map +1 -1
- package/dist/content.js +7 -6
- package/dist/content.js.map +1 -1
- package/dist/directdial.d.ts +3 -3
- package/dist/directdial.js +3 -3
- package/dist/index.d.ts +4 -9
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/key.d.ts +31 -0
- package/dist/key.js +72 -0
- package/dist/key.js.map +1 -0
- package/dist/pool.d.ts +167 -131
- package/dist/pool.js +200 -579
- package/dist/pool.js.map +1 -1
- package/dist/session.d.ts +58 -50
- package/dist/session.js +104 -85
- package/dist/session.js.map +1 -1
- package/dist/stream.d.ts +63 -0
- package/dist/stream.js +93 -0
- package/dist/stream.js.map +1 -0
- package/dist/wire.d.ts +53 -0
- package/dist/wire.js +79 -0
- package/dist/wire.js.map +1 -0
- package/package.json +5 -4
- package/prebuilds/darwin-arm64/@macula-io+ts.node +0 -0
- package/prebuilds/darwin-x64/@macula-io+ts.node +0 -0
- package/prebuilds/linux-arm64/@macula-io+ts.node +0 -0
- package/prebuilds/linux-x64/@macula-io+ts.node +0 -0
- package/prebuilds/win32-x64/@macula-io+ts.node +0 -0
package/dist/session.js
CHANGED
|
@@ -50,20 +50,26 @@ export class Session {
|
|
|
50
50
|
#identity;
|
|
51
51
|
#activeServe = null;
|
|
52
52
|
#activeSubscription = null;
|
|
53
|
-
// Serializes every
|
|
54
|
-
// stream: call()/callWithUcan()/the DHT methods, plus
|
|
55
|
-
// advertise
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
// racing it
|
|
59
|
-
// concurrent call()s on one Session left EVERY later read on
|
|
60
|
-
// Session permanently failing "claimed frame length ...
|
|
61
|
-
// 16777215-byte cap"
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
53
|
+
// Serializes every operation that reads this Session's shared
|
|
54
|
+
// control stream: call()/callWithUcan()/the DHT methods, plus
|
|
55
|
+
// serve()'s advertise + each poll tick + unadvertise, plus
|
|
56
|
+
// subscribe()'s start + stop. macula-go's connection/frame_stream.go
|
|
57
|
+
// RecvFrame mutates a shared buffer with no mutex of its own, so two
|
|
58
|
+
// reads racing it corrupt the stream -- verified live: `Promise.all`
|
|
59
|
+
// of 4 concurrent call()s on one Session left EVERY later read on
|
|
60
|
+
// that same Session permanently failing "claimed frame length ...
|
|
61
|
+
// exceeds the 16777215-byte cap" (a torn buffer), not just that one
|
|
62
|
+
// batch. The `#activeServe`/`#activeSubscription` checks above only
|
|
63
|
+
// ever protected call()-family operations from an ACTIVE serve()/
|
|
64
|
+
// subscribe() -- they did nothing to stop two ordinary call()s (or a
|
|
65
|
+
// call() racing a DHT method) from racing each other, since neither
|
|
66
|
+
// flag is set in that case. This queue is what actually closes that
|
|
67
|
+
// gap: every control-stream-reading native call funnels through
|
|
68
|
+
// #enqueue, so only one is ever in flight at a time, regardless of
|
|
69
|
+
// which method it came from. publish()/putContent()/getContent() do
|
|
70
|
+
// NOT go through this -- see their own docs for why (a pure write,
|
|
71
|
+
// and each own dedicated QUIC stream, respectively -- neither reads
|
|
72
|
+
// this shared stream at all).
|
|
67
73
|
#queue = Promise.resolve();
|
|
68
74
|
#enqueue(fn) {
|
|
69
75
|
const result = this.#queue.then(fn, fn);
|
|
@@ -102,27 +108,31 @@ export class Session {
|
|
|
102
108
|
}
|
|
103
109
|
return this.#handle;
|
|
104
110
|
}
|
|
105
|
-
/** call()'s own handle-plus-
|
|
106
|
-
* methods below
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
111
|
+
/** call()'s own handle-plus-exclusivity guard, factored out since the
|
|
112
|
+
* DHT methods below (findRecord/findRecords/findRecordsByType/
|
|
113
|
+
* putRecord) all end up on this Session's same shared control stream
|
|
114
|
+
* too -- macula-go's dht.FindRecord et al. are themselves just a
|
|
115
|
+
* connection.Session.Call under the hood (see cabi/dht.go), so mixing
|
|
116
|
+
* one of these with an active serve() OR subscribe() on this Session
|
|
117
|
+
* races exactly the way call() itself would: serve()'s poll loop and
|
|
118
|
+
* subscribe()'s background reader both read frames off this same
|
|
119
|
+
* stream on their own schedule, same as call()'s own blocking read
|
|
120
|
+
* does. publish() is deliberately NOT guarded by this: it only ever
|
|
121
|
+
* WRITES a fire-and-forget frame (connection.Session.Publish), never
|
|
122
|
+
* reads, so it does not race a concurrent reader the way call()/
|
|
123
|
+
* serve()/subscribe()/the DHT methods do -- and the live pubsub round
|
|
124
|
+
* trip this SDK's own test performs (subscribe(), then publish() on
|
|
125
|
+
* the SAME Session while that subscription is active) depends on
|
|
126
|
+
* publish() staying unguarded here. */
|
|
117
127
|
#requireHandleNotServing(caller) {
|
|
118
128
|
const handle = this.#requireHandle();
|
|
119
129
|
if (this.#activeServe !== null) {
|
|
120
130
|
throw new Error(`macula-ts: Session.${caller}() while serve("${this.#activeServe.procedure}") is active on the same ` +
|
|
121
|
-
`Session
|
|
131
|
+
`Session races on the shared control stream -- open a second Session for the other role.`);
|
|
122
132
|
}
|
|
123
133
|
if (this.#activeSubscription !== null) {
|
|
124
134
|
throw new Error(`macula-ts: Session.${caller}() while subscribe("${this.#activeSubscription.topic}") is active on the ` +
|
|
125
|
-
`same Session
|
|
135
|
+
`same Session races on the shared control stream -- open a second Session for the other role.`);
|
|
126
136
|
}
|
|
127
137
|
return handle;
|
|
128
138
|
}
|
|
@@ -200,10 +210,13 @@ export class Session {
|
|
|
200
210
|
*
|
|
201
211
|
* Real network I/O -- a signed frame out and a wait for the reply,
|
|
202
212
|
* up to opts.deadlineMs -- so this runs off the main thread on the
|
|
203
|
-
* native side, like connect()/close().
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
213
|
+
* native side, like connect()/close(). Do not call this
|
|
214
|
+
* concurrently with an active serve() on the SAME Session: both read
|
|
215
|
+
* frames off the one shared control stream, and macula-go's own
|
|
216
|
+
* ServeOneCall/Call docs both warn that mixing roles on one
|
|
217
|
+
* connection races (an unrelated frame arriving first is discarded,
|
|
218
|
+
* not queued) -- open a second Session for the other role instead,
|
|
219
|
+
* exactly what this SDK's own live test does. */
|
|
207
220
|
async call(procedure, payload, opts = {}) {
|
|
208
221
|
const handle = this.#requireHandleNotServing("call");
|
|
209
222
|
const timeoutMs = opts.deadlineMs ?? DEFAULT_CALL_TIMEOUT_MS;
|
|
@@ -241,8 +254,9 @@ export class Session {
|
|
|
241
254
|
* security property that isn't actually enforced.
|
|
242
255
|
*
|
|
243
256
|
* Real network I/O, off the main thread on the native side, and
|
|
244
|
-
* subject to the same
|
|
245
|
-
* (`#requireHandleNotServing`)
|
|
257
|
+
* subject to the identical same-Session exclusivity rule as `call()`
|
|
258
|
+
* (`#requireHandleNotServing`) -- both end up on the same shared
|
|
259
|
+
* control stream. */
|
|
246
260
|
async callWithUcan(procedure, payload, ucanToken, opts = {}) {
|
|
247
261
|
const handle = this.#requireHandleNotServing("callWithUcan");
|
|
248
262
|
const timeoutMs = opts.deadlineMs ?? DEFAULT_CALL_TIMEOUT_MS;
|
|
@@ -268,15 +282,11 @@ export class Session {
|
|
|
268
282
|
* between this and the JS handler) would map to
|
|
269
283
|
* TemporaryRelayFailure, per that same file.
|
|
270
284
|
*
|
|
271
|
-
* Only one serve() registration is allowed per Session at a time
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
* procedure instead of trying to serve two procedures off one. serve()
|
|
277
|
-
* also refuses while a subscribe() is active on the same Session, and
|
|
278
|
-
* call()/the DHT methods refuse while a serve() is (the one-role rule,
|
|
279
|
-
* #requireHandleNotServing).
|
|
285
|
+
* Only one serve() registration is allowed per Session at a time --
|
|
286
|
+
* see call()'s own doc on why mixing roles (or two server loops) on
|
|
287
|
+
* one connection is unsafe, not just inadvisable; open a second
|
|
288
|
+
* Session for a second procedure instead of trying to serve two
|
|
289
|
+
* procedures off one.
|
|
280
290
|
*
|
|
281
291
|
* `opts.bytes` picks how bytes in each inbound CALL's payload reach
|
|
282
292
|
* `handler`: "hex" (the default) or "tagged" (rpc.ts's BytesOutput).
|
|
@@ -292,13 +302,13 @@ export class Session {
|
|
|
292
302
|
async serve(procedure, handler, opts = {}) {
|
|
293
303
|
const bytesMode = bytesModeFor(opts.bytes);
|
|
294
304
|
if (this.#activeServe !== null) {
|
|
295
|
-
throw new Error(`macula-ts: Session is already serving "${this.#activeServe.procedure}" --
|
|
296
|
-
`
|
|
297
|
-
`
|
|
305
|
+
throw new Error(`macula-ts: Session is already serving "${this.#activeServe.procedure}" -- macula-go's ServeOneCall reads ` +
|
|
306
|
+
`one frame at a time off the shared control stream, so a second concurrent serve() (or a serve() ` +
|
|
307
|
+
`alongside call()) on the same Session races; open a second Session instead.`);
|
|
298
308
|
}
|
|
299
309
|
if (this.#activeSubscription !== null) {
|
|
300
310
|
throw new Error(`macula-ts: Session.serve() while subscribe("${this.#activeSubscription.topic}") is active on the same ` +
|
|
301
|
-
`Session
|
|
311
|
+
`Session races on the shared control stream -- open a second Session for the other role.`);
|
|
302
312
|
}
|
|
303
313
|
const handle = this.#requireHandle();
|
|
304
314
|
const identityHandle = this.#identity.handleForFfi();
|
|
@@ -376,9 +386,9 @@ export class Session {
|
|
|
376
386
|
* signature or checks its expiry -- see DhtRecord's own doc (dht.ts).
|
|
377
387
|
*
|
|
378
388
|
* Real network I/O, off the main thread on the native side, exactly
|
|
379
|
-
* like call() -- and subject to the same
|
|
380
|
-
* #requireHandleNotServing's own doc):
|
|
381
|
-
*
|
|
389
|
+
* like call() -- and subject to the same same-Session exclusivity
|
|
390
|
+
* rule as call() (see #requireHandleNotServing's own doc): do not
|
|
391
|
+
* call this while serve() is active on the same Session. */
|
|
382
392
|
async findRecordsByType(recordType) {
|
|
383
393
|
const handle = this.#requireHandleNotServing("findRecordsByType");
|
|
384
394
|
const json = await this.#enqueue(() => native.dhtFindRecordsByType(handle, this.#identity.handleForFfi(), recordType));
|
|
@@ -390,7 +400,7 @@ export class Session {
|
|
|
390
400
|
* procedure, not just the first one found. `key` must be exactly 32
|
|
391
401
|
* bytes -- see dht/record.go's ProcedureKey/StationEndpointKey/
|
|
392
402
|
* ContentKey (macula-go) for how those are derived from the thing
|
|
393
|
-
* being looked up. Same I/O and
|
|
403
|
+
* being looked up. Same I/O and exclusivity notes as
|
|
394
404
|
* findRecordsByType(). */
|
|
395
405
|
async findRecords(key) {
|
|
396
406
|
const handle = this.#requireHandleNotServing("findRecords");
|
|
@@ -402,7 +412,7 @@ export class Session {
|
|
|
402
412
|
* dht.FindRecord). Resolves `null` when none exists -- mirrors
|
|
403
413
|
* macula-go's own dht.ErrNotFound, translated to a value instead of a
|
|
404
414
|
* thrown error since "not found" is an expected, routine outcome
|
|
405
|
-
* here, not exceptional. Same I/O and
|
|
415
|
+
* here, not exceptional. Same I/O and exclusivity notes as
|
|
406
416
|
* findRecordsByType(). */
|
|
407
417
|
async findRecord(key) {
|
|
408
418
|
const handle = this.#requireHandleNotServing("findRecord");
|
|
@@ -444,7 +454,7 @@ export class Session {
|
|
|
444
454
|
* silently becomes CBOR text. Typed arguments rule that mistake out
|
|
445
455
|
* (see DhtRecord's own doc). `ttlMs` defaults to DHT_DEFAULT_TTL_MS
|
|
446
456
|
* (48h). Resolves with the signed record actually stored. Same I/O
|
|
447
|
-
* and
|
|
457
|
+
* and exclusivity notes as findRecordsByType(). */
|
|
448
458
|
async putProcedureAdvertisement(procedure, servingStation, opts = {}) {
|
|
449
459
|
const handle = this.#requireHandleNotServing("putProcedureAdvertisement");
|
|
450
460
|
requireKey32(servingStation);
|
|
@@ -461,7 +471,7 @@ export class Session {
|
|
|
461
471
|
* own doc for wrapping macula-go's real constructor instead of a
|
|
462
472
|
* generic JSON-payload builder (announcer_node/mcid are the same kind
|
|
463
473
|
* of raw-byte field). `ttlMs` defaults to DHT_DEFAULT_TTL_MS (48h).
|
|
464
|
-
* Same I/O and
|
|
474
|
+
* Same I/O and exclusivity notes as findRecordsByType(). */
|
|
465
475
|
async putContentAnnouncement(mcid, endpoint, ttlMs = DHT_DEFAULT_TTL_MS) {
|
|
466
476
|
const handle = this.#requireHandleNotServing("putContentAnnouncement");
|
|
467
477
|
if (mcid.length !== 34) {
|
|
@@ -491,7 +501,7 @@ export class Session {
|
|
|
491
501
|
* diagnostics).
|
|
492
502
|
*
|
|
493
503
|
* Real network I/O, off the main thread on the native side, subject to
|
|
494
|
-
* the same
|
|
504
|
+
* the same same-Session exclusivity rule as `call()`/the DHT methods
|
|
495
505
|
* (`#requireHandleNotServing`). */
|
|
496
506
|
async resolveDirect(procedure, opts = {}) {
|
|
497
507
|
if (opts.deadlineMs !== undefined && !(opts.deadlineMs > 0)) {
|
|
@@ -522,9 +532,9 @@ export class Session {
|
|
|
522
532
|
*
|
|
523
533
|
* Real network I/O (DHT lookups, a fresh QUIC dial, then the CALL
|
|
524
534
|
* itself) -- off the main thread on the native side, subject to the
|
|
525
|
-
* same
|
|
526
|
-
* (the separate dialed connection this opens
|
|
527
|
-
* Session and is never exposed as one). */
|
|
535
|
+
* same same-Session exclusivity rule as `call()` for THIS Session's own
|
|
536
|
+
* DHT-querying use (the separate dialed connection this opens
|
|
537
|
+
* internally is not this Session and is never exposed as one). */
|
|
528
538
|
async callDirect(procedure, payload, opts = {}) {
|
|
529
539
|
const handle = this.#requireHandleNotServing("callDirect");
|
|
530
540
|
const timeoutMs = opts.deadlineMs ?? DEFAULT_CALL_TIMEOUT_MS;
|
|
@@ -548,7 +558,7 @@ export class Session {
|
|
|
548
558
|
* method's and ucan.ts's own doc for why: macula's UCAN gate is a
|
|
549
559
|
* bearer-token check, not an audience match).
|
|
550
560
|
*
|
|
551
|
-
* Same I/O and
|
|
561
|
+
* Same I/O and exclusivity notes as `callDirect()`. */
|
|
552
562
|
async callDirectWithUcan(procedure, payload, ucanToken, opts = {}) {
|
|
553
563
|
const handle = this.#requireHandleNotServing("callDirectWithUcan");
|
|
554
564
|
const timeoutMs = opts.deadlineMs ?? DEFAULT_CALL_TIMEOUT_MS;
|
|
@@ -587,8 +597,10 @@ export class Session {
|
|
|
587
597
|
*
|
|
588
598
|
* **Must NOT be called on a Session that is also actively
|
|
589
599
|
* `serve()`-ing** -- enforced by the same `#requireHandleNotServing`
|
|
590
|
-
*
|
|
591
|
-
* `PutRecord`
|
|
600
|
+
* guard `call()`/the DHT methods use, for the identical reason: this
|
|
601
|
+
* method's own `PutRecord` CALL reads a RESULT off the same shared
|
|
602
|
+
* control stream `serve()`'s poll loop is also reading, and the two
|
|
603
|
+
* would race (matches `directdial.AdvertiseDirect`'s own doc). A
|
|
592
604
|
* provider that also serves `procedure` needs a SEPARATE Session (and
|
|
593
605
|
* identity -- this fleet enforces one connection per identity, kicking
|
|
594
606
|
* whichever connects second) to call this on.
|
|
@@ -613,11 +625,13 @@ export class Session {
|
|
|
613
625
|
* observes a subscriber's own publish arriving back at it rather than
|
|
614
626
|
* asserting it as a hard guarantee, for the same reason).
|
|
615
627
|
*
|
|
616
|
-
* Deliberately NOT
|
|
617
|
-
* subscribe()/the DHT methods share (see
|
|
618
|
-
* doc) -- publish() only ever writes,
|
|
619
|
-
*
|
|
620
|
-
*
|
|
628
|
+
* Deliberately NOT guarded by the same-Session exclusivity rule
|
|
629
|
+
* call()/serve()/subscribe()/the DHT methods share (see
|
|
630
|
+
* #requireHandleNotServing's own doc) -- publish() only ever writes,
|
|
631
|
+
* never reads off the shared control stream, so it does not race a
|
|
632
|
+
* concurrent serve()/subscribe() the way those do, and can run safely
|
|
633
|
+
* on the SAME Session a subscribe() of its own is active on -- exactly
|
|
634
|
+
* what a subscriber publishing to (and receiving) its own topic needs.
|
|
621
635
|
*
|
|
622
636
|
* `opts.realm` (see CallOptions.realm's own doc for the hex-string
|
|
623
637
|
* format and exact-match semantics) scopes which realm this EVENT is
|
|
@@ -635,18 +649,21 @@ export class Session {
|
|
|
635
649
|
await native.sessionPublish(handle, this.#identity.handleForFfi(), realm, topic, payloadJson, opts.ttlMs ?? 0);
|
|
636
650
|
}
|
|
637
651
|
/** Pubsub: sends a signed SUBSCRIBE for `topic`, then delivers every
|
|
638
|
-
* inbound EVENT for it to `handler` --
|
|
639
|
-
*
|
|
640
|
-
*
|
|
641
|
-
*
|
|
642
|
-
*
|
|
652
|
+
* inbound EVENT for it to `handler` -- macula-go's own
|
|
653
|
+
* connection.Session.RunSubscriber (connection/subscriber.go) drives
|
|
654
|
+
* the actual read loop on the Go side, in a background goroutine, NOT
|
|
655
|
+
* reimplemented on top of a hand-rolled poll here (see cabi/pubsub.go's
|
|
656
|
+
* own doc for why RunSubscriber specifically, over the lower-level
|
|
657
|
+
* RecvEvent). Delivery is Go-driven, not JS-driven: unlike serve()'s
|
|
643
658
|
* poll loop, nothing on this side calls into the native layer
|
|
644
659
|
* repeatedly to ask "did anything arrive yet" -- the addon calls INTO
|
|
645
660
|
* this handler asynchronously, via a Napi::ThreadSafeFunction wired to
|
|
646
661
|
* that background goroutine, whenever an EVENT actually shows up.
|
|
647
662
|
*
|
|
648
663
|
* Only one subscribe() (and no active serve()) is allowed per Session
|
|
649
|
-
* at a time --
|
|
664
|
+
* at a time -- same reasoning as serve()'s own one-at-a-time rule
|
|
665
|
+
* (#requireHandleNotServing's own doc): the background reader and any
|
|
666
|
+
* other read off this Session's shared control stream would race.
|
|
650
667
|
* Open a second Session for a second topic (or to serve/call
|
|
651
668
|
* concurrently) instead.
|
|
652
669
|
*
|
|
@@ -681,11 +698,12 @@ export class Session {
|
|
|
681
698
|
async subscribe(topic, handler, opts = {}) {
|
|
682
699
|
if (this.#activeServe !== null) {
|
|
683
700
|
throw new Error(`macula-ts: Session.subscribe() while serve("${this.#activeServe.procedure}") is active on the same ` +
|
|
684
|
-
`Session
|
|
701
|
+
`Session races on the shared control stream -- open a second Session for the other role.`);
|
|
685
702
|
}
|
|
686
703
|
if (this.#activeSubscription !== null) {
|
|
687
|
-
throw new Error(`macula-ts: Session is already subscribed to "${this.#activeSubscription.topic}" --
|
|
688
|
-
`
|
|
704
|
+
throw new Error(`macula-ts: Session is already subscribed to "${this.#activeSubscription.topic}" -- macula-go's ` +
|
|
705
|
+
`RunSubscriber reads one frame at a time off the shared control stream, so a second concurrent ` +
|
|
706
|
+
`subscribe() on the same Session races; open a second Session instead.`);
|
|
689
707
|
}
|
|
690
708
|
const handle = this.#requireHandle();
|
|
691
709
|
const identityHandle = this.#identity.handleForFfi();
|
|
@@ -751,8 +769,8 @@ export class Session {
|
|
|
751
769
|
}
|
|
752
770
|
/** Content transfer: stores `data` (macula-go's content.Put, on this
|
|
753
771
|
* Session's own fresh dedicated QUIC stream -- Session.
|
|
754
|
-
* OpenDedicatedStream on the Go side, NOT the control stream
|
|
755
|
-
* call()/serve()/the DHT methods/subscribe() all
|
|
772
|
+
* OpenDedicatedStream on the Go side, NOT the shared control stream
|
|
773
|
+
* call()/serve()/the DHT methods/subscribe() all read from), chunking
|
|
756
774
|
* automatically above manifest.DefaultChunkSize (256 KiB) and
|
|
757
775
|
* returning the hex-encoded mcid it's now addressable by. `name` is
|
|
758
776
|
* used ONLY on the chunked path (attached to the resulting manifest)
|
|
@@ -763,11 +781,12 @@ export class Session {
|
|
|
763
781
|
* station may forget this content later, and there is no list/delete
|
|
764
782
|
* operation. Treat this as "hand these bytes to a peer once."
|
|
765
783
|
*
|
|
766
|
-
* Because Put opens its own dedicated stream
|
|
767
|
-
* serve()/the DHT
|
|
768
|
-
*
|
|
769
|
-
*
|
|
770
|
-
*
|
|
784
|
+
* Because Put opens its own dedicated stream instead of reading the
|
|
785
|
+
* shared control stream, this is, unlike call()/serve()/the DHT
|
|
786
|
+
* methods/subscribe(), never subject to Session's same-Session
|
|
787
|
+
* exclusivity guard (#requireHandleNotServing) -- it can run
|
|
788
|
+
* concurrently with an active serve()/subscribe() (or another
|
|
789
|
+
* putContent()/getContent()) on the same Session without racing.
|
|
771
790
|
*
|
|
772
791
|
* Real network I/O (one or more signed CALLs on the new stream) --
|
|
773
792
|
* runs off the main thread on the native side, like every other
|
|
@@ -791,9 +810,9 @@ export class Session {
|
|
|
791
810
|
* (a bad session, a malformed mcid, a real transport error) rejects
|
|
792
811
|
* with a plain Error instead.
|
|
793
812
|
*
|
|
794
|
-
*
|
|
795
|
-
*
|
|
796
|
-
*
|
|
813
|
+
* Same dedicated-stream, no-exclusivity-guard reasoning as
|
|
814
|
+
* putContent() -- safe alongside an active serve()/subscribe() on the
|
|
815
|
+
* same Session. Real network I/O, runs off the main thread. */
|
|
797
816
|
async getContent(mcid) {
|
|
798
817
|
const handle = this.#requireHandle();
|
|
799
818
|
const data = await native.contentGet(handle, this.#identity.handleForFfi(), mcid);
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/stream.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type Handle } from "./binding.js";
|
|
2
|
+
import { type BytesOutput, type JsonValue } from "./wire.js";
|
|
3
|
+
/** The three stream modes: the provider sends (server), the caller sends and
|
|
4
|
+
* the provider replies (client), or both send (bidi). */
|
|
5
|
+
export declare enum StreamMode {
|
|
6
|
+
Server = 0,
|
|
7
|
+
Client = 1,
|
|
8
|
+
Bidi = 2
|
|
9
|
+
}
|
|
10
|
+
/** A frame the peer sent: a chunk (raw bytes as hex or tagged, or a value),
|
|
11
|
+
* the end of its sending ("send") or of the stream ("both"), or the
|
|
12
|
+
* provider's reply. */
|
|
13
|
+
export type StreamEvent = {
|
|
14
|
+
readonly kind: "data";
|
|
15
|
+
readonly encoding: "raw" | "msgpack";
|
|
16
|
+
readonly body: JsonValue;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "end";
|
|
19
|
+
readonly role: "send" | "both";
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: "reply";
|
|
22
|
+
readonly payload: JsonValue;
|
|
23
|
+
};
|
|
24
|
+
/** A stream's open: who opened it, where, and its payload. */
|
|
25
|
+
export interface StreamRequest {
|
|
26
|
+
readonly caller: string;
|
|
27
|
+
readonly realm: string;
|
|
28
|
+
readonly procedure: string;
|
|
29
|
+
readonly payload: JsonValue;
|
|
30
|
+
readonly deadlineMs: number;
|
|
31
|
+
}
|
|
32
|
+
export declare class Stream {
|
|
33
|
+
private readonly handle;
|
|
34
|
+
private readonly bytes;
|
|
35
|
+
private freed;
|
|
36
|
+
/** @internal */
|
|
37
|
+
constructor(handle: Handle, bytes: BytesOutput | undefined);
|
|
38
|
+
/** The stream's open. */
|
|
39
|
+
request(): StreamRequest;
|
|
40
|
+
/** Sends a raw chunk. */
|
|
41
|
+
send(chunk: Uint8Array): Promise<void>;
|
|
42
|
+
/** Sends a structured chunk. */
|
|
43
|
+
sendValue(value: JsonValue): Promise<void>;
|
|
44
|
+
/** Ends this side's sending; the peer may still send. */
|
|
45
|
+
closeSend(): Promise<void>;
|
|
46
|
+
/** Ends the stream on both sides. */
|
|
47
|
+
close(): Promise<void>;
|
|
48
|
+
/** The provider's terminal value; ends the stream. */
|
|
49
|
+
reply(payload: JsonValue): Promise<void>;
|
|
50
|
+
/** Ends the stream with a STREAM_ERROR the peer sees. */
|
|
51
|
+
abort(code: string, message?: string): Promise<void>;
|
|
52
|
+
/** The peer's next frame, or null once the stream has ended normally. A
|
|
53
|
+
* stream error is thrown as a StreamError; `timeoutMs` (0 for none) bounds
|
|
54
|
+
* the wait with an Error("timeout"). */
|
|
55
|
+
recv(options?: {
|
|
56
|
+
timeoutMs?: number;
|
|
57
|
+
}): Promise<StreamEvent | null>;
|
|
58
|
+
/** Every frame until the stream ends. */
|
|
59
|
+
[Symbol.asyncIterator](): AsyncIterator<StreamEvent>;
|
|
60
|
+
/** Releases the stream, aborting it first when it has not ended. */
|
|
61
|
+
free(): Promise<void>;
|
|
62
|
+
private live;
|
|
63
|
+
}
|
package/dist/stream.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// A streaming session, on either side: the caller's from Pool.openStream, or
|
|
2
|
+
// a provider's handed to a Pool.serveStream handler. Each session is a QUIC
|
|
3
|
+
// stream of its own, released on every path; frames are signed by each side
|
|
4
|
+
// and verified before they are handed on.
|
|
5
|
+
import { native } from "./binding.js";
|
|
6
|
+
import { StreamError, bytesModeFor } from "./wire.js";
|
|
7
|
+
/** The three stream modes: the provider sends (server), the caller sends and
|
|
8
|
+
* the provider replies (client), or both send (bidi). */
|
|
9
|
+
export var StreamMode;
|
|
10
|
+
(function (StreamMode) {
|
|
11
|
+
StreamMode[StreamMode["Server"] = 0] = "Server";
|
|
12
|
+
StreamMode[StreamMode["Client"] = 1] = "Client";
|
|
13
|
+
StreamMode[StreamMode["Bidi"] = 2] = "Bidi";
|
|
14
|
+
})(StreamMode || (StreamMode = {}));
|
|
15
|
+
export class Stream {
|
|
16
|
+
handle;
|
|
17
|
+
bytes;
|
|
18
|
+
freed = false;
|
|
19
|
+
/** @internal */
|
|
20
|
+
constructor(handle, bytes) {
|
|
21
|
+
this.handle = handle;
|
|
22
|
+
this.bytes = bytes;
|
|
23
|
+
}
|
|
24
|
+
/** The stream's open. */
|
|
25
|
+
request() {
|
|
26
|
+
const r = JSON.parse(native.streamRequest(this.live(), bytesModeFor(this.bytes)));
|
|
27
|
+
return { caller: r.caller, realm: r.realm, procedure: r.procedure, payload: r.payload, deadlineMs: r.deadline_ms };
|
|
28
|
+
}
|
|
29
|
+
/** Sends a raw chunk. */
|
|
30
|
+
async send(chunk) {
|
|
31
|
+
await native.streamSendBytes(this.live(), chunk);
|
|
32
|
+
}
|
|
33
|
+
/** Sends a structured chunk. */
|
|
34
|
+
async sendValue(value) {
|
|
35
|
+
await native.streamSendJson(this.live(), JSON.stringify(value));
|
|
36
|
+
}
|
|
37
|
+
/** Ends this side's sending; the peer may still send. */
|
|
38
|
+
async closeSend() {
|
|
39
|
+
await native.streamCloseSend(this.live());
|
|
40
|
+
}
|
|
41
|
+
/** Ends the stream on both sides. */
|
|
42
|
+
async close() {
|
|
43
|
+
await native.streamClose(this.live());
|
|
44
|
+
}
|
|
45
|
+
/** The provider's terminal value; ends the stream. */
|
|
46
|
+
async reply(payload) {
|
|
47
|
+
await native.streamReply(this.live(), JSON.stringify(payload));
|
|
48
|
+
}
|
|
49
|
+
/** Ends the stream with a STREAM_ERROR the peer sees. */
|
|
50
|
+
async abort(code, message = "") {
|
|
51
|
+
await native.streamAbort(this.live(), code, message);
|
|
52
|
+
}
|
|
53
|
+
/** The peer's next frame, or null once the stream has ended normally. A
|
|
54
|
+
* stream error is thrown as a StreamError; `timeoutMs` (0 for none) bounds
|
|
55
|
+
* the wait with an Error("timeout"). */
|
|
56
|
+
async recv(options = {}) {
|
|
57
|
+
const e = JSON.parse(await native.streamRecv(this.live(), options.timeoutMs ?? 0, bytesModeFor(this.bytes)));
|
|
58
|
+
switch (e.kind) {
|
|
59
|
+
case "eof":
|
|
60
|
+
return null;
|
|
61
|
+
case "error":
|
|
62
|
+
throw new StreamError(e.code, e.message ?? "", e.relay === 1);
|
|
63
|
+
case "data":
|
|
64
|
+
return { kind: "data", encoding: e.encoding, body: e.body };
|
|
65
|
+
case "end":
|
|
66
|
+
return { kind: "end", role: e.role };
|
|
67
|
+
default:
|
|
68
|
+
return { kind: "reply", payload: e.payload };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Every frame until the stream ends. */
|
|
72
|
+
async *[Symbol.asyncIterator]() {
|
|
73
|
+
for (;;) {
|
|
74
|
+
const event = await this.recv();
|
|
75
|
+
if (event === null)
|
|
76
|
+
return;
|
|
77
|
+
yield event;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Releases the stream, aborting it first when it has not ended. */
|
|
81
|
+
async free() {
|
|
82
|
+
if (this.freed)
|
|
83
|
+
return;
|
|
84
|
+
this.freed = true;
|
|
85
|
+
await native.streamFree(this.handle);
|
|
86
|
+
}
|
|
87
|
+
live() {
|
|
88
|
+
if (this.freed)
|
|
89
|
+
throw new Error("macula-ts: this Stream was freed");
|
|
90
|
+
return this.handle;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../src/stream.ts"],"names":[],"mappings":"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"}
|