osra 0.3.0 → 0.3.1

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.
@@ -17,4 +17,4 @@ export type ConnectionMessage<TModules extends readonly RevivableModule[] = Defa
17
17
  Messages: (modules: TModules, value: T) => infer R;
18
18
  } ? R : never;
19
19
  export type ConnectionContext<TModules extends readonly RevivableModule[] = DefaultRevivableModules> = BidirectionalConnectionContext<TModules>;
20
- export declare const startConnections: <T = unknown, const TUserModules extends readonly RevivableModule[] = readonly []>(value: Capable<[...DefaultRevivableModules, ...TUserModules]>, { transport: _transport, name, remoteName, key, origin, unregisterSignal, revivableModules: _userRevivableModules }: StartConnectionsOptions<TUserModules>) => Promise<T>;
20
+ export declare const startConnections: <T = unknown, const TUserModules extends readonly RevivableModule[] = readonly []>(value: Capable<[...DefaultRevivableModules, ...TUserModules]>, { transport: _transport, name, remoteName, key, origin, unregisterSignal, revivableModules: _userRevivableModules, uuid: _uuid, remoteUuid: presetRemoteUuid, }: StartConnectionsOptions<TUserModules>) => Promise<T>;
@@ -15,6 +15,7 @@ export type ProtocolContext<TModules extends readonly RevivableModule[] = Defaul
15
15
  revivableModules: TModules;
16
16
  connectionContexts: Map<string, ConnectionContext<TModules>>;
17
17
  getUuid: () => Uuid;
18
+ presetRemoteUuid?: Uuid;
18
19
  sendMessage: (message: MessageVariant) => void;
19
20
  protocolEventTarget: ProtocolEventTarget<TModules>;
20
21
  resolveRemoteValue: (value: Capable<TModules>) => void;
@@ -28,4 +29,6 @@ export type StartConnectionsOptions<TUserModules extends readonly RevivableModul
28
29
  origin?: string;
29
30
  unregisterSignal?: AbortSignal;
30
31
  revivableModules?: TUserModules;
32
+ uuid?: Uuid;
33
+ remoteUuid?: Uuid;
31
34
  };
package/build/index.js CHANGED
@@ -27,10 +27,10 @@ var e = Object.defineProperty, t = (t, n) => {
27
27
  let t = a[e];
28
28
  if (!t) throw Error("Unknown typed array type");
29
29
  return t;
30
- }, l = (e) => o.some((t) => e instanceof t), u = (e) => e instanceof WebSocket, d = (e) => !!globalThis.ServiceWorkerContainer && e instanceof ServiceWorkerContainer, f = (e) => !!globalThis.Worker && e instanceof Worker, p = (e) => !!globalThis.DedicatedWorkerGlobalScope && e instanceof DedicatedWorkerGlobalScope, m = (e) => !!globalThis.SharedWorker && e instanceof SharedWorker, h = (e) => e instanceof MessagePort, g = (e) => !!e && typeof e == "object" && "__OSRA_KEY__" in e && !!e.__OSRA_KEY__, _ = (e, t) => {
30
+ }, l = (e) => o.some((t) => e instanceof t), u = (e) => e instanceof WebSocket, d = (e) => !!globalThis.ServiceWorkerContainer && e instanceof ServiceWorkerContainer, f = (e) => !!globalThis.Worker && e instanceof Worker, p = (e) => !!globalThis.DedicatedWorkerGlobalScope && e instanceof DedicatedWorkerGlobalScope, m = (e) => !!globalThis.SharedWorker && e instanceof SharedWorker, h = (e) => e instanceof MessagePort, ee = (e) => !!e && typeof e == "object" && "__OSRA_KEY__" in e && !!e.__OSRA_KEY__, g = (e, t) => {
31
31
  for (let n of t) if (n && e instanceof n) return !0;
32
32
  return !1;
33
- }, v = (e) => _(e, [globalThis.SharedArrayBuffer]), ee = (e) => _(e, [
33
+ }, _ = (e) => g(e, [globalThis.SharedArrayBuffer]), v = (e) => g(e, [
34
34
  globalThis.ArrayBuffer,
35
35
  globalThis.MessagePort,
36
36
  globalThis.ReadableStream,
@@ -59,7 +59,7 @@ var O = (e) => C(e) || T(e) || d(e) || f(e) || p(e) || m(e) || h(e) || k(e);
59
59
  function re(e) {
60
60
  if (!O(e)) throw Error("Transport is not receiveable");
61
61
  }
62
- var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.emit) || typeof e.emit == "function", k = (e) => !e || typeof e != "object" || C(e) || !("receive" in e) ? !1 : O(e.receive) || typeof e.receive == "function", A = (e) => ie(e) || k(e), ae = (e) => D(e) || O(e) || A(e) || E(e), oe = () => globalThis.browser ?? globalThis.chrome, se = () => oe()?.runtime, j = (e, t) => g(e) && e.__OSRA_KEY__ === t, M = (e, t) => e?.addEventListener("abort", t, { once: !0 }), ce = ({ listener: e, transport: t, remoteName: r, key: i = n, unregisterSignal: a }) => {
62
+ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.emit) || typeof e.emit == "function", k = (e) => !e || typeof e != "object" || C(e) || !("receive" in e) ? !1 : O(e.receive) || typeof e.receive == "function", A = (e) => ie(e) || k(e), ae = (e) => D(e) || O(e) || A(e) || E(e), oe = () => globalThis.browser ?? globalThis.chrome, se = () => oe()?.runtime, j = (e, t) => ee(e) && e.__OSRA_KEY__ === t, M = (e, t) => e?.addEventListener("abort", t, { once: !0 }), ce = ({ listener: e, transport: t, remoteName: r, key: i = n, unregisterSignal: a }) => {
63
63
  let o = A(t) ? t.receive : t;
64
64
  if (typeof o == "function") {
65
65
  o((t, n) => {
@@ -220,14 +220,14 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
220
220
  s(), i.close();
221
221
  return;
222
222
  }
223
- let n = Q(e.data, t);
223
+ let n = Z(e.data, t);
224
224
  i.postMessage(n, $(n));
225
225
  };
226
226
  function l({ data: e }) {
227
227
  t.sendMessage({
228
228
  type: "message",
229
229
  remoteUuid: t.remoteUuid,
230
- data: Z(e, t),
230
+ data: X(e, t),
231
231
  portId: a
232
232
  });
233
233
  }
@@ -257,10 +257,10 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
257
257
  };
258
258
  }, H = (e, t) => "port" in e ? e.autoBox ? Ve(e.port, t) : e.port : He(e.portId, t, e.synthetic), Ve = (e, t) => {
259
259
  let n = new EventTarget(), r = ({ data: e }) => {
260
- n.dispatchEvent(new MessageEvent("message", { data: Q(e, t) }));
260
+ n.dispatchEvent(new MessageEvent("message", { data: Z(e, t) }));
261
261
  };
262
262
  return e.addEventListener("message", r), n.postMessage = (n, r) => {
263
- let i = Z(n, t), a = $(i), o = Array.isArray(r) ? r : [];
263
+ let i = X(n, t), a = $(i), o = Array.isArray(r) ? r : [];
264
264
  e.postMessage(i, o.length ? [...a, ...o] : a);
265
265
  }, n.start = () => e.start(), n.close = () => {
266
266
  e.removeEventListener("message", r), e.close();
@@ -293,13 +293,13 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
293
293
  c();
294
294
  return;
295
295
  }
296
- let r = Q(e.data, t);
296
+ let r = Z(e.data, t);
297
297
  n ? a.postMessage(r) : a.postMessage(r, $(r));
298
298
  }, u = ({ data: n }) => {
299
299
  t.sendMessage({
300
300
  type: "message",
301
301
  remoteUuid: t.remoteUuid,
302
- data: Z(n, t),
302
+ data: X(n, t),
303
303
  portId: e
304
304
  });
305
305
  };
@@ -473,15 +473,15 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
473
473
  ...N,
474
474
  type: ot,
475
475
  aborted: e.aborted,
476
- reason: e.aborted ? Z(e.reason, t) : void 0,
476
+ reason: e.aborted ? X(e.reason, t) : void 0,
477
477
  port: r
478
478
  };
479
479
  }, lt = (e, t) => {
480
480
  let n = new AbortController();
481
- if (e.aborted) return n.abort(Q(e.reason, t)), n.signal;
481
+ if (e.aborted) return n.abort(Z(e.reason, t)), n.signal;
482
482
  let r = H(e.port, t);
483
483
  return r.start(), r.addEventListener("message", ({ data: e }) => {
484
- e.type === "abort" && (n.abort(Q(e.reason, t)), r.close());
484
+ e.type === "abort" && (n.abort(Z(e.reason, t)), r.close());
485
485
  }), n.signal;
486
486
  }, ut = /* @__PURE__ */ t({
487
487
  box: () => pt,
@@ -585,7 +585,7 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
585
585
  id: e
586
586
  };
587
587
  }
588
- let a = globalThis.crypto.randomUUID(), o = Z(r, t);
588
+ let a = globalThis.crypto.randomUUID(), o = X(r, t);
589
589
  return i !== void 0 && (n.sendIds.set(i, a), n.sendRegistry.register(i, a)), {
590
590
  ...N,
591
591
  type: q,
@@ -596,15 +596,15 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
596
596
  let n = Et(t), r = n.receiveCache.get(e.id);
597
597
  if (r !== void 0) return r;
598
598
  if (!("inner" in e) || e.inner === void 0) throw Error(`osra identity: received id=${e.id} with no inner payload and no cached value`);
599
- let i = Q(e.inner, t);
599
+ let i = Z(e.inner, t);
600
600
  return n.receiveCache.set(e.id, i), i;
601
601
  }, jt = /* @__PURE__ */ t({
602
- box: () => Rt,
603
- isType: () => Lt,
604
- revive: () => zt,
605
- transfer: () => It,
602
+ box: () => zt,
603
+ isType: () => Rt,
604
+ revive: () => Bt,
605
+ transfer: () => Lt,
606
606
  type: () => Mt
607
- }), Mt = "transfer", X = Symbol.for("osra.transfer"), Nt = (e) => typeof e == "object" && !!e, Pt = (e) => Nt(e) && X in e && e[X] === !0, Ft = (e) => Nt(e) ? ArrayBuffer.isView(e) ? !0 : _(e, [
607
+ }), Mt = "transfer", Nt = Symbol.for("osra.transfer"), Pt = (e) => typeof e == "object" && !!e, Ft = (e) => Pt(e) && Nt in e && e[Nt] === !0, It = (e) => Pt(e) ? ArrayBuffer.isView(e) ? !0 : g(e, [
608
608
  globalThis.ArrayBuffer,
609
609
  globalThis.MessagePort,
610
610
  globalThis.ReadableStream,
@@ -612,54 +612,54 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
612
612
  globalThis.TransformStream,
613
613
  globalThis.ImageBitmap,
614
614
  globalThis.OffscreenCanvas
615
- ]) : !1, It = (e) => Ft(e) ? {
616
- [X]: !0,
615
+ ]) : !1, Lt = (e) => It(e) ? {
616
+ [Nt]: !0,
617
617
  value: e
618
- } : e, Lt = (e) => Pt(e), Rt = (e, t) => {
619
- let n = e.value, r = Z(n, t);
618
+ } : e, Rt = (e) => Ft(e), zt = (e, t) => {
619
+ let n = e.value, r = X(n, t);
620
620
  return {
621
621
  ...N,
622
622
  type: Mt,
623
623
  inner: r,
624
624
  degraded: E(t.transport)
625
625
  };
626
- }, zt = (e, t) => Q(e.inner, t), Bt = /* @__PURE__ */ t({
627
- box: () => Ht,
628
- isType: () => Vt,
629
- revive: () => Ut,
626
+ }, Bt = (e, t) => Z(e.inner, t), Vt = /* @__PURE__ */ t({
627
+ box: () => Ut,
628
+ isType: () => Ht,
629
+ revive: () => Wt,
630
630
  type: () => "map"
631
- }), Vt = (e) => e instanceof Map, Ht = (e, t) => ({
631
+ }), Ht = (e) => e instanceof Map, Ut = (e, t) => ({
632
632
  ...N,
633
633
  type: "map",
634
- entries: Array.from(e, ([e, n]) => [Z(e, t), Z(n, t)])
635
- }), Ut = (e, t) => new Map(e.entries.map(([e, n]) => [Q(e, t), Q(n, t)])), Wt = /* @__PURE__ */ t({
636
- box: () => Kt,
637
- isType: () => Gt,
638
- revive: () => qt,
634
+ entries: Array.from(e, ([e, n]) => [X(e, t), X(n, t)])
635
+ }), Wt = (e, t) => new Map(e.entries.map(([e, n]) => [Z(e, t), Z(n, t)])), Gt = /* @__PURE__ */ t({
636
+ box: () => qt,
637
+ isType: () => Kt,
638
+ revive: () => Jt,
639
639
  type: () => "set"
640
- }), Gt = (e) => e instanceof Set, Kt = (e, t) => ({
640
+ }), Kt = (e) => e instanceof Set, qt = (e, t) => ({
641
641
  ...N,
642
642
  type: "set",
643
- values: Array.from(e, (e) => Z(e, t))
644
- }), qt = (e, t) => new Set(e.values.map((e) => Q(e, t))), Jt = /* @__PURE__ */ t({
645
- box: () => Zt,
646
- isType: () => Xt,
647
- revive: () => Qt,
648
- type: () => Yt
649
- }), Yt = "bigint", Xt = (e) => typeof e == "bigint", Zt = (e, t) => ({
643
+ values: Array.from(e, (e) => X(e, t))
644
+ }), Jt = (e, t) => new Set(e.values.map((e) => Z(e, t))), Yt = /* @__PURE__ */ t({
645
+ box: () => Qt,
646
+ isType: () => Zt,
647
+ revive: () => $t,
648
+ type: () => Xt
649
+ }), Xt = "bigint", Zt = (e) => typeof e == "bigint", Qt = (e, t) => ({
650
650
  ...N,
651
- type: Yt,
651
+ type: Xt,
652
652
  value: e.toString()
653
- }), Qt = (e, t) => BigInt(e.value), $t = /* @__PURE__ */ t({
654
- box: () => rn,
655
- isType: () => nn,
656
- revive: () => un,
657
- type: () => en
658
- }), en = "eventTarget", tn = new FinalizationRegistry((e) => {
653
+ }), $t = (e, t) => BigInt(e.value), en = /* @__PURE__ */ t({
654
+ box: () => an,
655
+ isType: () => rn,
656
+ revive: () => dn,
657
+ type: () => tn
658
+ }), tn = "eventTarget", nn = new FinalizationRegistry((e) => {
659
659
  try {
660
660
  e.port.postMessage({ kind: "close" });
661
661
  } catch {}
662
- }), nn = (e) => e instanceof EventTarget, rn = (e, t) => {
662
+ }), rn = (e) => e instanceof EventTarget, an = (e, t) => {
663
663
  let { localPort: n, boxedRemote: r } = U(t), i = /* @__PURE__ */ new Map(), a = () => {
664
664
  for (let [t, n] of i) e.removeEventListener(t, n);
665
665
  i.clear(), n.removeEventListener("message", o), n.close();
@@ -691,15 +691,15 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
691
691
  };
692
692
  return n.addEventListener("message", o), n.start(), {
693
693
  ...N,
694
- type: en,
694
+ type: tn,
695
695
  port: r
696
696
  };
697
- }, an = (e) => typeof e == "boolean" ? e : !!e?.capture, on = (e) => typeof e == "object" && !!e && !!e.once, sn = (e, t, n, r) => {
697
+ }, on = (e) => typeof e == "boolean" ? e : !!e?.capture, sn = (e) => typeof e == "object" && !!e && !!e.once, cn = (e, t, n, r) => {
698
698
  let i = e.get(t);
699
699
  if (!i) return !1;
700
700
  let a = i.get(n);
701
701
  return !a || !a.delete(r) || (a.size === 0 && i.delete(n), i.size > 0) ? !1 : (e.delete(t), !0);
702
- }, cn = (e, t) => {
702
+ }, ln = (e, t) => {
703
703
  e.addEventListener("message", ({ data: e }) => {
704
704
  if (e.kind !== "event") return;
705
705
  let n = t.deref();
@@ -714,16 +714,16 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
714
714
  }) : new Event(e.eventType, r);
715
715
  n.dispatchEvent(i);
716
716
  });
717
- }, ln = (e, t, n) => {
717
+ }, un = (e, t, n) => {
718
718
  let r = EventTarget.prototype.addEventListener.bind(e), i = EventTarget.prototype.removeEventListener.bind(e);
719
719
  Object.defineProperty(e, "addEventListener", { value: (e, i, a) => {
720
720
  if (i === null) return;
721
- let o = an(a), s = on(a), c = n.get(e), l = !c;
721
+ let o = on(a), s = sn(a), c = n.get(e), l = !c;
722
722
  c || (c = /* @__PURE__ */ new Map(), n.set(e, c));
723
723
  let u = c.get(i);
724
724
  if (u || (u = /* @__PURE__ */ new Map(), c.set(i, u)), u.has(o)) return;
725
725
  let d = s ? (r) => {
726
- sn(n, e, i, o) && t.postMessage({
726
+ cn(n, e, i, o) && t.postMessage({
727
727
  kind: "unsubscribe",
728
728
  eventType: e
729
729
  }), typeof i == "function" ? i(r) : i.handleEvent(r);
@@ -734,18 +734,18 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
734
734
  }), r(e, d, a);
735
735
  } }), Object.defineProperty(e, "removeEventListener", { value: (e, r, a) => {
736
736
  if (r === null) return;
737
- let o = an(a), s = n.get(e)?.get(r)?.get(o);
738
- s && (i(e, s, a), sn(n, e, r, o) && t.postMessage({
737
+ let o = on(a), s = n.get(e)?.get(r)?.get(o);
738
+ s && (i(e, s, a), cn(n, e, r, o) && t.postMessage({
739
739
  kind: "unsubscribe",
740
740
  eventType: e
741
741
  }));
742
742
  } });
743
- }, un = (e, t) => {
743
+ }, dn = (e, t) => {
744
744
  let n = H(e.port, t);
745
745
  n.start();
746
746
  let r = new EventTarget(), i = /* @__PURE__ */ new Map();
747
- return cn(n, new WeakRef(r)), ln(r, n, i), tn.register(r, { port: n }, r), r;
748
- }, dn = [
747
+ return ln(n, new WeakRef(r)), un(r, n, i), nn.register(r, { port: n }, r), r;
748
+ }, fn = [
749
749
  jt,
750
750
  bt,
751
751
  fe,
@@ -760,32 +760,32 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
760
760
  at,
761
761
  ut,
762
762
  ht,
763
- Bt,
764
- Wt,
765
- Jt,
766
- $t
767
- ], fn = (e, t) => t.find((t) => t.isType(e)), pn = (e, t) => t.find((t) => t.type === e.type), mn = (e) => !!e && typeof e == "object" && Object.getPrototypeOf(e) === Object.prototype, hn = (e, t) => Array.isArray(e) ? e.map((e) => t(e)) : mn(e) ? Object.fromEntries(Object.entries(e).map(([e, n]) => [e, t(n)])) : e, gn = (e, t) => {
768
- let n = fn(e, t.revivableModules);
763
+ Vt,
764
+ Gt,
765
+ Yt,
766
+ en
767
+ ], pn = (e, t) => t.find((t) => t.isType(e)), mn = (e, t) => t.find((t) => t.type === e.type), hn = (e) => !!e && typeof e == "object" && Object.getPrototypeOf(e) === Object.prototype, gn = (e, t) => Array.isArray(e) ? e.map((e) => t(e)) : hn(e) ? Object.fromEntries(Object.entries(e).map(([e, n]) => [e, t(n)])) : e, _n = (e, t) => {
768
+ let n = pn(e, t.revivableModules);
769
769
  return n ? n.box(e, t) : e;
770
- }, Z = (e, t) => {
770
+ }, X = (e, t) => {
771
771
  if (P(e)) return e;
772
- let n = fn(e, t.revivableModules);
773
- return n ? n.box(e, t) : hn(e, (e) => Z(e, t));
774
- }, _n = (e, t) => {
775
- if (!P(e)) return e;
776
772
  let n = pn(e, t.revivableModules);
773
+ return n ? n.box(e, t) : gn(e, (e) => X(e, t));
774
+ }, vn = (e, t) => {
775
+ if (!P(e)) return e;
776
+ let n = mn(e, t.revivableModules);
777
777
  return n ? n.revive(e, t) : e;
778
- }, Q = (e, t) => {
778
+ }, Z = (e, t) => {
779
779
  if (P(e)) {
780
- let n = pn(e, t.revivableModules);
780
+ let n = mn(e, t.revivableModules);
781
781
  if (n) return n.revive(e, t);
782
782
  }
783
- return hn(e, (e) => Q(e, t));
784
- }, vn = /* @__PURE__ */ t({
783
+ return gn(e, (e) => Z(e, t));
784
+ }, yn = /* @__PURE__ */ t({
785
785
  init: () => xn,
786
- startBidirectionalConnection: () => bn,
787
- type: () => yn
788
- }), yn = "bidirectional", bn = ({ transport: e, value: t, remoteUuid: n, eventTarget: r, send: i, revivableModules: a }) => {
786
+ startBidirectionalConnection: () => Q,
787
+ type: () => bn
788
+ }), bn = "bidirectional", Q = ({ transport: e, value: t, remoteUuid: n, eventTarget: r, send: i, revivableModules: a }) => {
789
789
  let o = {
790
790
  transport: e,
791
791
  remoteUuid: n,
@@ -800,51 +800,69 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
800
800
  }), i({
801
801
  type: "init",
802
802
  remoteUuid: n,
803
- data: Z(t, o)
803
+ data: X(t, o)
804
804
  }), {
805
805
  revivableContext: o,
806
- remoteValue: s.then((e) => Q(e, o))
806
+ remoteValue: s.then((e) => Z(e, o))
807
807
  };
808
808
  }, xn = (e) => {
809
- D(e.transport) && O(e.transport) && (e.protocolEventTarget.addEventListener("message", ({ detail: t }) => {
810
- if (t.type === "announce") {
811
- if (!t.remoteUuid) {
809
+ if (D(e.transport) && O(e.transport)) {
810
+ if (e.protocolEventTarget.addEventListener("message", ({ detail: t }) => {
811
+ if (t.type === "announce") {
812
+ if (!t.remoteUuid) {
813
+ e.sendMessage({
814
+ type: "announce",
815
+ remoteUuid: t.uuid
816
+ });
817
+ return;
818
+ }
819
+ if (t.remoteUuid !== e.getUuid() || e.connectionContexts.has(t.uuid)) return;
812
820
  e.sendMessage({
813
821
  type: "announce",
814
822
  remoteUuid: t.uuid
815
823
  });
824
+ let n = e.createConnectionEventTarget(), r = {
825
+ type: "bidirectional",
826
+ eventTarget: n,
827
+ connection: Q({
828
+ transport: e.transport,
829
+ value: e.value,
830
+ remoteUuid: t.uuid,
831
+ eventTarget: n,
832
+ send: (t) => e.sendMessage(t),
833
+ revivableModules: e.revivableModules
834
+ })
835
+ };
836
+ e.connectionContexts.set(t.uuid, r), r.connection.remoteValue.then((t) => e.resolveRemoteValue(t));
816
837
  return;
817
838
  }
818
- if (t.remoteUuid !== e.getUuid() || e.connectionContexts.has(t.uuid)) return;
819
- e.sendMessage({
820
- type: "announce",
821
- remoteUuid: t.uuid
822
- });
823
- let n = e.createConnectionEventTarget(), r = {
839
+ if (t.type === "close") {
840
+ if (t.remoteUuid !== e.getUuid()) return;
841
+ e.connectionContexts.delete(t.uuid);
842
+ return;
843
+ }
844
+ if (t.remoteUuid !== e.getUuid()) return;
845
+ let n = e.connectionContexts.get(t.uuid);
846
+ n && n.eventTarget.dispatchEvent(new CustomEvent("message", { detail: t }));
847
+ }), e.presetRemoteUuid !== void 0) {
848
+ let t = e.createConnectionEventTarget(), n = {
824
849
  type: "bidirectional",
825
- eventTarget: n,
826
- connection: bn({
850
+ eventTarget: t,
851
+ connection: Q({
827
852
  transport: e.transport,
828
853
  value: e.value,
829
- remoteUuid: t.uuid,
830
- eventTarget: n,
854
+ remoteUuid: e.presetRemoteUuid,
855
+ eventTarget: t,
831
856
  send: (t) => e.sendMessage(t),
832
857
  revivableModules: e.revivableModules
833
858
  })
834
859
  };
835
- e.connectionContexts.set(t.uuid, r), r.connection.remoteValue.then((t) => e.resolveRemoteValue(t));
860
+ e.connectionContexts.set(e.presetRemoteUuid, n), n.connection.remoteValue.then((t) => e.resolveRemoteValue(t));
836
861
  return;
837
862
  }
838
- if (t.type === "close") {
839
- if (t.remoteUuid !== e.getUuid()) return;
840
- e.connectionContexts.delete(t.uuid);
841
- return;
842
- }
843
- if (t.remoteUuid !== e.getUuid()) return;
844
- let n = e.connectionContexts.get(t.uuid);
845
- n && n.eventTarget.dispatchEvent(new CustomEvent("message", { detail: t }));
846
- }), e.sendMessage({ type: "announce" }));
847
- }, Sn = () => new EventTarget(), Cn = (e) => _(e, [
863
+ e.sendMessage({ type: "announce" });
864
+ }
865
+ }, Sn = () => new EventTarget(), Cn = (e) => g(e, [
848
866
  globalThis.MessagePort,
849
867
  globalThis.ReadableStream,
850
868
  globalThis.WritableStream,
@@ -852,7 +870,7 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
852
870
  globalThis.OffscreenCanvas
853
871
  ]), wn = (e) => P(e) && e.type === "transfer", $ = (e) => {
854
872
  let t = [], n = /* @__PURE__ */ new WeakSet(), r = (e, i) => {
855
- if (!(!e || typeof e != "object") && !n.has(e) && (n.add(e), !v(e))) {
873
+ if (!(!e || typeof e != "object") && !n.has(e) && (n.add(e), !_(e))) {
856
874
  if (wn(e)) {
857
875
  r(e.inner, i || !e.degraded);
858
876
  return;
@@ -861,7 +879,7 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
861
879
  t.push(e);
862
880
  return;
863
881
  }
864
- if (ee(e)) {
882
+ if (v(e)) {
865
883
  i && t.push(e);
866
884
  return;
867
885
  }
@@ -881,40 +899,41 @@ var ie = (e) => !e || typeof e != "object" || C(e) || !("emit" in e) ? !1 : D(e.
881
899
  emit: e,
882
900
  receive: e
883
901
  }
884
- }), En = (e) => [...dn.filter((t) => !(e ?? []).some((e) => e.type === t.type)), ...e ?? []], Dn = [vn], On = (e, { transport: t, name: i, remoteName: a, key: o = r, origin: s = "*", unregisterSignal: c, revivableModules: l }) => {
885
- let u = Tn(t), d = En(l), f = /* @__PURE__ */ new Map(), { promise: p, resolve: m } = Promise.withResolvers(), h = globalThis.crypto.randomUUID(), g = (e) => {
886
- if (c?.aborted || !D(u)) return;
902
+ }), En = (e) => [...fn.filter((t) => !(e ?? []).some((e) => e.type === t.type)), ...e ?? []], Dn = [yn], On = (e, { transport: t, name: i, remoteName: a, key: o = r, origin: s = "*", unregisterSignal: c, revivableModules: l, uuid: u, remoteUuid: d }) => {
903
+ let f = Tn(t), p = En(l), m = /* @__PURE__ */ new Map(), { promise: h, resolve: ee } = Promise.withResolvers(), g = u ?? globalThis.crypto.randomUUID(), _ = (e) => {
904
+ if (c?.aborted || !D(f)) return;
887
905
  let t = {
888
906
  [n]: o,
889
907
  name: i,
890
- uuid: h,
908
+ uuid: g,
891
909
  ...e
892
910
  };
893
- le(u, t, s, $(t));
894
- }, _ = Sn(), v = {
895
- transport: u,
911
+ le(f, t, s, $(t));
912
+ }, v = Sn(), y = {
913
+ transport: f,
896
914
  value: e,
897
- revivableModules: d,
898
- connectionContexts: f,
899
- getUuid: () => h,
900
- sendMessage: g,
901
- protocolEventTarget: _,
902
- resolveRemoteValue: m,
915
+ revivableModules: p,
916
+ connectionContexts: m,
917
+ getUuid: () => g,
918
+ presetRemoteUuid: d,
919
+ sendMessage: _,
920
+ protocolEventTarget: v,
921
+ resolveRemoteValue: ee,
903
922
  createConnectionEventTarget: Sn
904
923
  };
905
- O(u) && ce({
924
+ O(f) && ce({
906
925
  listener: (e, t) => {
907
- e.uuid !== h && _.dispatchEvent(new CustomEvent("message", { detail: e }));
926
+ e.uuid !== g && v.dispatchEvent(new CustomEvent("message", { detail: e }));
908
927
  },
909
- transport: u,
928
+ transport: f,
910
929
  remoteName: a,
911
930
  key: o,
912
931
  unregisterSignal: c
913
932
  });
914
- for (let e of Dn) e.init(v);
915
- return p;
933
+ for (let e of Dn) e.init(y);
934
+ return h;
916
935
  }, kn = async (e, t) => On(e, t);
917
936
  //#endregion
918
- export { N as BoxBase, R as EventChannel, L as EventPort, i as OSRA_BOX, r as OSRA_DEFAULT_KEY, n as OSRA_KEY, ne as assertEmitTransport, re as assertReceiveTransport, gn as box, ue as boxBuffer, j as checkOsraMessageKey, Dn as connections, Sn as createTypedEventTarget, dn as defaultRevivableModules, kn as expose, $ as getTransferableObjects, oe as getWebExtensionGlobal, se as getWebExtensionRuntime, wt as identity, xn as init, _ as instanceOfAny, v as isClonable, ie as isCustomEmitTransport, k as isCustomReceiveTransport, A as isCustomTransport, p as isDedicatedWorker, w as isEmitJsonOnlyTransport, D as isEmitTransport, E as isJsonOnlyTransport, g as isOsraMessage, T as isReceiveJsonOnlyTransport, O as isReceiveTransport, P as isRevivableBox, d as isServiceWorkerContainer, m as isSharedWorker, ee as isTransferable, ae as isTransport, l as isTypedArray, x as isWebExtensionOnConnect, S as isWebExtensionOnMessage, b as isWebExtensionPort, y as isWebExtensionRuntime, u as isWebSocket, C as isWindow, f as isWorker, En as mergeRevivableModules, Tn as normalizeTransport, Z as recursiveBox, Q as recursiveRevive, ce as registerOsraMessageListener, _n as revive, de as reviveBuffer, le as sendOsraMessage, F as serializeError, bn as startBidirectionalConnection, On as startConnections, It as transfer, yn as type, s as typedArrayToType, c as typedArrayTypeToTypedArrayConstructor };
937
+ export { N as BoxBase, R as EventChannel, L as EventPort, i as OSRA_BOX, r as OSRA_DEFAULT_KEY, n as OSRA_KEY, ne as assertEmitTransport, re as assertReceiveTransport, _n as box, ue as boxBuffer, j as checkOsraMessageKey, Dn as connections, Sn as createTypedEventTarget, fn as defaultRevivableModules, kn as expose, $ as getTransferableObjects, oe as getWebExtensionGlobal, se as getWebExtensionRuntime, wt as identity, xn as init, g as instanceOfAny, _ as isClonable, ie as isCustomEmitTransport, k as isCustomReceiveTransport, A as isCustomTransport, p as isDedicatedWorker, w as isEmitJsonOnlyTransport, D as isEmitTransport, E as isJsonOnlyTransport, ee as isOsraMessage, T as isReceiveJsonOnlyTransport, O as isReceiveTransport, P as isRevivableBox, d as isServiceWorkerContainer, m as isSharedWorker, v as isTransferable, ae as isTransport, l as isTypedArray, x as isWebExtensionOnConnect, S as isWebExtensionOnMessage, b as isWebExtensionPort, y as isWebExtensionRuntime, u as isWebSocket, C as isWindow, f as isWorker, En as mergeRevivableModules, Tn as normalizeTransport, X as recursiveBox, Z as recursiveRevive, ce as registerOsraMessageListener, vn as revive, de as reviveBuffer, le as sendOsraMessage, F as serializeError, Q as startBidirectionalConnection, On as startConnections, Lt as transfer, bn as type, s as typedArrayToType, c as typedArrayTypeToTypedArrayConstructor };
919
938
 
920
939
  //# sourceMappingURL=index.js.map