osra 0.4.4 → 0.5.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.
Files changed (46) hide show
  1. package/README.md +224 -231
  2. package/build/connections/bidirectional.d.ts +25 -15
  3. package/build/connections/index.d.ts +8 -8
  4. package/build/connections/relay.d.ts +1 -1
  5. package/build/connections/utils.d.ts +6 -5
  6. package/build/index.d.ts +11 -11
  7. package/build/index.js +782 -513
  8. package/build/index.js.map +1 -1
  9. package/build/revivables/abort-signal.d.ts +6 -4
  10. package/build/revivables/array-buffer.d.ts +2 -2
  11. package/build/revivables/async-iterator.d.ts +16 -0
  12. package/build/revivables/bigint.d.ts +1 -1
  13. package/build/revivables/blob.d.ts +3 -3
  14. package/build/revivables/date.d.ts +1 -1
  15. package/build/revivables/error.d.ts +5 -2
  16. package/build/revivables/event-target.d.ts +5 -4
  17. package/build/revivables/event.d.ts +2 -2
  18. package/build/revivables/fallbacks.d.ts +1 -1
  19. package/build/revivables/function.d.ts +4 -4
  20. package/build/revivables/headers.d.ts +1 -1
  21. package/build/revivables/identity.d.ts +3 -3
  22. package/build/revivables/index.d.ts +48 -39
  23. package/build/revivables/json-primitives.d.ts +17 -0
  24. package/build/revivables/map.d.ts +2 -2
  25. package/build/revivables/message-port.d.ts +6 -6
  26. package/build/revivables/promise.d.ts +5 -5
  27. package/build/revivables/readable-stream.d.ts +8 -4
  28. package/build/revivables/request.d.ts +4 -2
  29. package/build/revivables/response.d.ts +2 -2
  30. package/build/revivables/set.d.ts +2 -2
  31. package/build/revivables/symbol.d.ts +5 -3
  32. package/build/revivables/transfer.d.ts +2 -2
  33. package/build/revivables/typed-array.d.ts +3 -3
  34. package/build/revivables/utils.d.ts +5 -10
  35. package/build/revivables/writable-stream.d.ts +4 -4
  36. package/build/types.d.ts +12 -4
  37. package/build/utils/event-channel.d.ts +1 -1
  38. package/build/utils/index.d.ts +11 -12
  39. package/build/utils/replace.d.ts +0 -3
  40. package/build/utils/teardown.d.ts +7 -0
  41. package/build/utils/transferable.d.ts +1 -1
  42. package/build/utils/transport.d.ts +13 -15
  43. package/build/utils/type-guards.d.ts +12 -4
  44. package/build/utils/typed-event-target.d.ts +1 -1
  45. package/build/utils/typed-message-channel.d.ts +3 -2
  46. package/package.json +21 -8
package/build/index.js CHANGED
@@ -6,7 +6,66 @@ var e = Object.defineProperty, t = (t, n) => {
6
6
  enumerable: !0
7
7
  });
8
8
  return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
- }, n = "__OSRA_KEY__", r = "__OSRA_DEFAULT_KEY__", i = "__OSRA_BOX__", a = globalThis.Float16Array, o = {
9
+ }, n = "__OSRA_KEY__", r = "__OSRA_DEFAULT_KEY__", i = "__OSRA_BOX__", a = () => globalThis.browser ?? globalThis.chrome, o = () => a()?.runtime, s = (e, t) => te(e) && e.__OSRA_KEY__ === t, c = (e, t) => {
10
+ if (e) {
11
+ if (e.aborted) {
12
+ t();
13
+ return;
14
+ }
15
+ e.addEventListener("abort", t, { once: !0 });
16
+ }
17
+ }, l = ({ listener: e, transport: t, remoteName: n, key: i = r, origin: a = "*", unregisterSignal: o }) => {
18
+ if (o?.aborted) return;
19
+ let l = M(t) ? t.receive : t;
20
+ if (typeof l == "function") {
21
+ let t = l((t, r) => {
22
+ o?.aborted || s(t, i) && (n && t.name !== n || e(t, r));
23
+ });
24
+ typeof t == "function" && c(o, t);
25
+ return;
26
+ }
27
+ if (w(l) || T(l) || E(l) || D(l)) {
28
+ let t = (t, r) => {
29
+ let a = (t, a) => {
30
+ s(t, i) && (n && t.name !== n || e(t, {
31
+ port: r,
32
+ sender: a
33
+ }));
34
+ };
35
+ t.addListener(a), c(o, () => t.removeListener(a));
36
+ };
37
+ if (w(l)) t(l.onMessage);
38
+ else if (E(l)) {
39
+ let e = (e) => t(e.onMessage, e);
40
+ l.addListener(e), c(o, () => l.removeListener(e));
41
+ } else D(l) ? t(l) : t(l.onMessage);
42
+ return;
43
+ }
44
+ let u = x(l) ? l.port : l, d = a !== "*" && O(l), f = (t) => {
45
+ let r = t.data;
46
+ if (typeof r == "string") try {
47
+ r = JSON.parse(r);
48
+ } catch {
49
+ return;
50
+ }
51
+ s(r, i) && (n && r.name !== n || d && t.origin && t.origin !== a || e(r, {
52
+ receiveTransport: l,
53
+ source: t.source,
54
+ origin: t.origin
55
+ }));
56
+ };
57
+ u.addEventListener("message", f), u instanceof MessagePort && u.start(), c(o, () => u.removeEventListener("message", f));
58
+ }, u = (e, t, n = "*", r = []) => {
59
+ let i = M(e) ? e.emit : e;
60
+ if (typeof i == "function") i(t, r);
61
+ else if (O(i)) i.postMessage(t, n, r);
62
+ else if (T(i)) i.postMessage(t);
63
+ else if (w(i)) i.sendMessage(t);
64
+ else if (_(i)) {
65
+ let e = JSON.stringify(t);
66
+ i.readyState === WebSocket.CONNECTING ? i.addEventListener("open", () => i.send(e), { once: !0 }) : i.send(e);
67
+ } else x(i) ? i.port.postMessage(t, r) : i.postMessage(t, r);
68
+ }, d = globalThis.Float16Array, f = {
10
69
  Int8Array,
11
70
  Uint8Array,
12
71
  Uint8ClampedArray,
@@ -14,24 +73,27 @@ var e = Object.defineProperty, t = (t, n) => {
14
73
  Uint16Array,
15
74
  Int32Array,
16
75
  Uint32Array,
17
- Float16Array: a,
76
+ Float16Array: d,
18
77
  Float32Array,
19
78
  Float64Array,
20
79
  BigInt64Array,
21
80
  BigUint64Array
22
- }, s = Object.values(o), c = (e) => {
81
+ }, p = Object.values(f), m = (e) => {
23
82
  let t = e.constructor.name;
24
- if (t in o) return t;
25
- for (let [t, n] of Object.entries(o)) if (n && e instanceof n) return t;
83
+ if (t in f) return t;
84
+ for (let [t, n] of Object.entries(f)) if (n && e instanceof n) return t;
26
85
  throw Error("Unknown typed array type");
27
- }, l = (e) => {
28
- let t = o[e];
86
+ }, h = (e) => {
87
+ let t = f[e];
29
88
  if (!t) throw Error("Unknown typed array type");
30
89
  return t;
31
- }, u = (e) => s.some((t) => !!t && e instanceof t), d = (e) => e instanceof WebSocket, f = (e) => !!globalThis.ServiceWorkerContainer && e instanceof ServiceWorkerContainer, p = (e) => !!globalThis.Worker && e instanceof Worker, m = (e) => !!globalThis.DedicatedWorkerGlobalScope && e instanceof DedicatedWorkerGlobalScope, h = (e) => !!globalThis.SharedWorker && e instanceof SharedWorker, g = (e) => e instanceof MessagePort, _ = (e) => !!e && typeof e == "object" && "__OSRA_KEY__" in e && !!e.__OSRA_KEY__, v = (e, t) => {
90
+ }, g = (e) => p.some((t) => !!t && e instanceof t), _ = (e) => e instanceof WebSocket, ee = (e) => !!globalThis.ServiceWorkerContainer && e instanceof ServiceWorkerContainer, v = (e) => !!globalThis.ServiceWorker && e instanceof ServiceWorker, y = (e) => !!globalThis.Worker && e instanceof Worker, b = (e) => {
91
+ let t = globalThis.DedicatedWorkerGlobalScope;
92
+ return !!t && e instanceof t;
93
+ }, x = (e) => !!globalThis.SharedWorker && e instanceof SharedWorker, S = (e) => e instanceof MessagePort, te = (e) => !!e && typeof e == "object" && "__OSRA_KEY__" in e && !!e.__OSRA_KEY__, C = (e, t) => {
32
94
  for (let n of t) if (n && e instanceof n) return !0;
33
95
  return !1;
34
- }, y = (e) => v(e, [globalThis.SharedArrayBuffer]), ee = (e) => v(e, [
96
+ }, ne = (e) => C(e, [globalThis.SharedArrayBuffer]), re = ne, ie = (e) => C(e, [
35
97
  globalThis.ArrayBuffer,
36
98
  globalThis.MessagePort,
37
99
  globalThis.ReadableStream,
@@ -47,13 +109,13 @@ var e = Object.defineProperty, t = (t, n) => {
47
109
  globalThis.RTCDataChannel,
48
110
  globalThis.WebTransportReceiveStream,
49
111
  globalThis.WebTransportSendStream
50
- ]), b = (e) => {
51
- let t = ce();
112
+ ]), w = (e) => {
113
+ let t = o();
52
114
  return t ? e === t : !1;
53
- }, x = (e, t = !1) => !e || typeof e != "object" || w(e) || !("name" in e) || !("disconnect" in e) || !("postMessage" in e) ? !1 : t ? "sender" in e && "onMessage" in e && "onDisconnect" in e : !0, te = (e) => !!e && typeof e == "object" && !w(e) && "addListener" in e && "hasListener" in e && "removeListener" in e, S = (e) => {
54
- let t = ce();
115
+ }, T = (e, t = !1) => !e || typeof e != "object" || O(e) || !("name" in e) || !("disconnect" in e) || !("postMessage" in e) ? !1 : t ? "sender" in e && "onMessage" in e && "onDisconnect" in e : !0, ae = (e) => !!e && typeof e == "object" && !O(e) && "addListener" in e && "hasListener" in e && "removeListener" in e, E = (e) => {
116
+ let t = o();
55
117
  return t ? e === t.onConnect || e === t.onConnectExternal : !1;
56
- }, C = (e) => te(e), w = (e) => {
118
+ }, D = (e) => ae(e), O = (e) => {
57
119
  if (!e || typeof e != "object") return !1;
58
120
  try {
59
121
  return "window" in e && e.window === e;
@@ -64,105 +126,176 @@ var e = Object.defineProperty, t = (t, n) => {
64
126
  return !1;
65
127
  }
66
128
  }
67
- }, T = (e) => d(e) || x(e) || b(e), ne = (e) => d(e) || x(e) || S(e) || C(e) || b(e), E = (e) => !!e && typeof e == "object" && "isJson" in e && e.isJson === !0 || T(e) || ne(e), D = (e) => w(e) || T(e) || f(e) || p(e) || m(e) || h(e) || g(e) || ae(e);
68
- function re(e) {
69
- if (!D(e)) throw Error("Transport is not emitable");
129
+ }, oe = (e) => _(e) || T(e) || w(e), se = (e) => _(e) || T(e) || E(e) || D(e) || w(e), k = (e) => !!e && typeof e == "object" && "isJson" in e && e.isJson === !0 || oe(e) || se(e), A = (e) => O(e) || oe(e) || v(e) || y(e) || b(e) || x(e) || S(e) || de(e);
130
+ function ce(e) {
131
+ if (!A(e)) throw Error("Transport is not emitable");
70
132
  }
71
- var O = (e) => w(e) || ne(e) || f(e) || p(e) || m(e) || h(e) || g(e) || k(e);
72
- function ie(e) {
73
- if (!O(e)) throw Error("Transport is not receiveable");
133
+ var j = (e) => O(e) || se(e) || ee(e) || y(e) || b(e) || x(e) || S(e) || fe(e);
134
+ function le(e) {
135
+ if (!j(e)) throw Error("Transport is not receiveable");
74
136
  }
75
- var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.emit) || typeof e.emit == "function", k = (e) => !e || typeof e != "object" || w(e) || !("receive" in e) ? !1 : O(e.receive) || typeof e.receive == "function", A = (e) => ae(e) || k(e), oe = (e) => D(e) || O(e) || A(e) || E(e), se = () => globalThis.browser ?? globalThis.chrome, ce = () => se()?.runtime, j = (e, t) => _(e) && e.__OSRA_KEY__ === t, le = (e, t) => e?.addEventListener("abort", t, { once: !0 }), M = ({ listener: e, transport: t, remoteName: r, key: i = n, unregisterSignal: a }) => {
76
- let o = A(t) ? t.receive : t;
77
- if (typeof o == "function") {
78
- o((t, n) => {
79
- j(t, i) && (r && t.name !== r || e(t, n));
80
- });
81
- return;
82
- }
83
- if (b(o) || x(o) || S(o) || C(o)) {
84
- let t = (t, n) => {
85
- let o = (t, a) => {
86
- j(t, i) && (r && t.name !== r || e(t, {
87
- port: n,
88
- sender: a
89
- }));
90
- };
91
- t.addListener(o), le(a, () => t.removeListener(o));
92
- };
93
- if (b(o)) t(o.onMessage);
94
- else if (S(o)) {
95
- let e = (e) => t(e.onMessage, e);
96
- o.addListener(e), le(a, () => o.removeListener(e));
97
- } else C(o) ? t(o) : t(o.onMessage);
98
- return;
99
- }
100
- let s = (t) => {
101
- j(t.data, i) && (r && t.data.name !== r || e(t.data, {
102
- receiveTransport: o,
103
- source: t.source
104
- }));
105
- };
106
- o.addEventListener("message", s), le(a, () => o.removeEventListener("message", s));
107
- }, ue = (e, t, n = "*", r = []) => {
108
- let i = A(e) ? e.emit : e;
109
- typeof i == "function" ? i(t, r) : w(i) ? i.postMessage(t, n, r) : x(i) ? i.postMessage(t) : b(i) ? i.sendMessage(t) : d(i) ? i.send(JSON.stringify(t)) : h(i) ? i.port.postMessage(t, r) : i.postMessage(t, r);
110
- }, N = { [i]: "revivable" }, P = (e) => !!e && typeof e == "object" && "__OSRA_BOX__" in e && e.__OSRA_BOX__ === "revivable", F = (e, t) => E(t.transport) ? { base64Buffer: new Uint8Array(e).toBase64() } : { arrayBuffer: e }, I = (e) => "arrayBuffer" in e ? e.arrayBuffer : Uint8Array.fromBase64(e.base64Buffer).buffer, de = /* @__PURE__ */ t({
111
- box: () => me,
112
- isType: () => pe,
113
- revive: () => he,
114
- type: () => fe
115
- }), fe = "arrayBuffer", pe = (e) => e instanceof ArrayBuffer, me = (e, t) => ({
116
- ...N,
117
- type: fe,
118
- ...F(e, t)
119
- }), he = (e, t) => I(e), ge = /* @__PURE__ */ t({
137
+ var ue = (e) => {
138
+ if (!e || typeof e != "object" || O(e)) return !1;
139
+ let t = Object.getPrototypeOf(e);
140
+ return t === Object.prototype || t === null;
141
+ }, de = (e) => !ue(e) || !("emit" in e) ? !1 : A(e.emit) || typeof e.emit == "function", fe = (e) => !ue(e) || !("receive" in e) ? !1 : j(e.receive) || typeof e.receive == "function", M = (e) => de(e) || fe(e), pe = (e) => A(e) || j(e) || M(e) || k(e), N = { [i]: "revivable" }, P = (e) => !!e && typeof e == "object" && "__OSRA_BOX__" in e && e.__OSRA_BOX__ === "revivable", me = (e, t) => k(t.transport) ? { base64Buffer: new Uint8Array(e).toBase64() } : { arrayBuffer: e }, he = (e) => "arrayBuffer" in e ? e.arrayBuffer : Uint8Array.fromBase64(e.base64Buffer).buffer, ge = /* @__PURE__ */ t({
120
142
  box: () => ye,
121
143
  isType: () => ve,
122
144
  revive: () => be,
123
145
  type: () => _e
124
- }), _e = "date", ve = (e) => e instanceof Date, ye = (e, t) => ({
146
+ }), _e = "arrayBuffer", ve = (e) => e instanceof ArrayBuffer, ye = (e, t) => ({
125
147
  ...N,
126
148
  type: _e,
127
- ISOString: e.toISOString()
128
- }), be = (e, t) => new Date(e.ISOString), xe = /* @__PURE__ */ t({
149
+ ...me(e, t)
150
+ }), be = (e, t) => he(e), xe = /* @__PURE__ */ t({
129
151
  box: () => we,
130
152
  isType: () => Ce,
131
153
  revive: () => Te,
132
154
  type: () => Se
133
- }), Se = "headers", Ce = (e) => e instanceof Headers, we = (e, t) => ({
155
+ }), Se = "date", Ce = (e) => e instanceof Date, we = (e, t) => ({
134
156
  ...N,
135
157
  type: Se,
136
- entries: [...e.entries()]
137
- }), Te = (e, t) => new Headers(e.entries), Ee = /* @__PURE__ */ t({
158
+ ISOString: e.toISOString()
159
+ }), Te = (e, t) => new Date(e.ISOString), Ee = /* @__PURE__ */ t({
138
160
  box: () => ke,
139
161
  isType: () => Oe,
140
162
  revive: () => Ae,
141
163
  type: () => De
142
- }), De = "error", Oe = (e) => e instanceof Error, ke = (e, t) => {
143
- let n = "cause" in e && e.cause !== void 0;
164
+ }), De = "headers", Oe = (e) => e instanceof Headers, ke = (e, t) => ({
165
+ ...N,
166
+ type: De,
167
+ entries: [...e.entries()]
168
+ }), Ae = (e, t) => new Headers(e.entries), je = /* @__PURE__ */ t({
169
+ box: () => Fe,
170
+ isType: () => Pe,
171
+ revive: () => Ie,
172
+ type: () => Me
173
+ }), Me = "error", Ne = {
174
+ Error,
175
+ TypeError,
176
+ RangeError,
177
+ SyntaxError,
178
+ ReferenceError,
179
+ EvalError,
180
+ URIError
181
+ }, Pe = (e) => e instanceof Error, Fe = (e, t) => {
182
+ let n = "cause" in e && e.cause !== void 0, r = typeof AggregateError < "u" && e instanceof AggregateError, i = typeof DOMException < "u" && e instanceof DOMException;
144
183
  return {
145
184
  ...N,
146
- type: De,
185
+ type: Me,
147
186
  name: e.name,
148
187
  message: e.message,
149
188
  stack: e.stack || e.toString(),
150
- ...n ? { cause: Y(e.cause, t) } : {}
189
+ ...n ? { cause: X(e.cause, t) } : {},
190
+ ...r ? { errors: X(e.errors, t) } : {},
191
+ ...i ? { isDOMException: !0 } : {}
151
192
  };
152
- }, Ae = (e, t) => {
153
- let n = e.cause === void 0 ? void 0 : X(e.cause, t), r = n === void 0 ? Error(e.message) : Error(e.message, { cause: n });
154
- return e.name && (r.name = e.name), e.stack && (r.stack = e.stack), r;
155
- }, je = /* @__PURE__ */ t({
156
- box: () => Pe,
157
- isType: () => Ne,
158
- revive: () => Fe,
159
- type: () => Me
160
- }), Me = "typedArray", Ne = u, Pe = (e, t) => ({
193
+ }, Ie = (e, t) => {
194
+ let n = e.cause === void 0 ? void 0 : Z(e.cause, t), r = n === void 0 ? void 0 : { cause: n };
195
+ if (e.isDOMException && typeof DOMException < "u") {
196
+ let t = new DOMException(e.message, e.name);
197
+ if (e.stack) try {
198
+ Object.defineProperty(t, "stack", {
199
+ value: e.stack,
200
+ configurable: !0
201
+ });
202
+ } catch {}
203
+ return t;
204
+ }
205
+ let i;
206
+ if (e.errors !== void 0 && typeof AggregateError < "u") i = AggregateError(Z(e.errors, t), e.message, r);
207
+ else {
208
+ let t = Ne[e.name] ?? Error;
209
+ i = r === void 0 ? new t(e.message) : new t(e.message, r);
210
+ }
211
+ return e.name && i.name !== e.name && (i.name = e.name), e.stack && (i.stack = e.stack), i;
212
+ }, Le = /* @__PURE__ */ t({
213
+ box: () => Be,
214
+ isType: () => ze,
215
+ revive: () => Ve,
216
+ type: () => Re
217
+ }), Re = "typedArray", ze = g, Be = (e, t) => {
218
+ let n = e.byteOffset === 0 && e.byteLength === e.buffer.byteLength ? e.buffer : e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength);
219
+ return {
220
+ ...N,
221
+ type: Re,
222
+ typedArrayType: m(e),
223
+ ...me(n, t)
224
+ };
225
+ }, Ve = (e, t) => new (h(e.typedArrayType))(he(e)), F = /* @__PURE__ */ new WeakMap(), He = /* @__PURE__ */ new WeakSet(), I = (e, t) => {
226
+ if (He.has(e)) return t(), () => {};
227
+ let n = F.get(e);
228
+ return n || F.set(e, n = /* @__PURE__ */ new Set()), n.add(t), () => n.delete(t);
229
+ }, Ue = (e) => {
230
+ if (He.has(e)) return;
231
+ He.add(e);
232
+ let t = F.get(e);
233
+ if (t) {
234
+ F.delete(e);
235
+ for (let e of t) try {
236
+ e();
237
+ } catch {}
238
+ }
239
+ }, We = /* @__PURE__ */ t({
240
+ box: () => Qe,
241
+ isType: () => Ze,
242
+ revive: () => $e,
243
+ transfer: () => Xe,
244
+ type: () => Ge
245
+ }), Ge = "transfer", Ke = Symbol.for("osra.transfer"), qe = (e) => typeof e == "object" && !!e, Je = (e) => qe(e) && Ke in e && e[Ke] === !0, Ye = (e) => qe(e) ? ArrayBuffer.isView(e) ? !0 : C(e, [
246
+ globalThis.ArrayBuffer,
247
+ globalThis.MessagePort,
248
+ globalThis.ReadableStream,
249
+ globalThis.WritableStream,
250
+ globalThis.TransformStream,
251
+ globalThis.ImageBitmap,
252
+ globalThis.OffscreenCanvas
253
+ ]) : !1, Xe = (e) => Ye(e) ? {
254
+ [Ke]: !0,
255
+ value: e
256
+ } : e, Ze = (e) => Je(e), Qe = (e, t) => ({
161
257
  ...N,
162
- type: Me,
163
- typedArrayType: c(e),
164
- ...F(e.buffer, t)
165
- }), Fe = (e, t) => new (l(e.typedArrayType))(I(e)), L = class extends EventTarget {
258
+ type: Ge,
259
+ inner: X(e.value, t),
260
+ degraded: k(t.transport)
261
+ }), $e = (e, t) => Z(e.inner, t), et = (e) => C(e, [
262
+ globalThis.MessagePort,
263
+ globalThis.ReadableStream,
264
+ globalThis.WritableStream,
265
+ globalThis.TransformStream,
266
+ globalThis.OffscreenCanvas,
267
+ globalThis.MediaSourceHandle,
268
+ globalThis.MediaStreamTrack,
269
+ globalThis.MIDIAccess,
270
+ globalThis.RTCDataChannel,
271
+ globalThis.WebTransportReceiveStream,
272
+ globalThis.WebTransportSendStream
273
+ ]), tt = (e) => P(e) && e.type === "transfer", L = (e) => {
274
+ let t = [], n = /* @__PURE__ */ new WeakSet(), r = (e, i) => {
275
+ if (!(!e || typeof e != "object") && !n.has(e) && (n.add(e), !ne(e))) {
276
+ if (tt(e)) {
277
+ r(e.inner, i || !e.degraded);
278
+ return;
279
+ }
280
+ if (et(e)) {
281
+ t.push(e);
282
+ return;
283
+ }
284
+ if (ie(e)) {
285
+ i && t.push(e);
286
+ return;
287
+ }
288
+ if (!ArrayBuffer.isView(e)) {
289
+ if (Array.isArray(e)) {
290
+ for (let t of e) r(t, i);
291
+ return;
292
+ }
293
+ for (let t of Object.values(e)) r(t, i);
294
+ }
295
+ }
296
+ };
297
+ return r(e, !1), t;
298
+ }, R = class extends EventTarget {
166
299
  addEventListener(e, t, n) {
167
300
  super.addEventListener(e, t, n);
168
301
  }
@@ -200,39 +333,51 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
200
333
  }
201
334
  }
202
335
  close() {
203
- this._closed || (this._closed = !0, this._queue.length = 0, this._onClose?.());
336
+ if (this._closed) return;
337
+ this._closed = !0, this._queue.length = 0, this._onClose?.();
338
+ let e = this._peer;
339
+ e && !e._closed && queueMicrotask(() => {
340
+ e._closed || e.dispatchEvent(new Event("close"));
341
+ });
204
342
  }
205
- }, R = class {
343
+ }, z = class {
206
344
  port1;
207
345
  port2;
208
346
  constructor() {
209
- let e = new L(), t = new L();
347
+ let e = new R(), t = new R();
210
348
  e._peer = t, t._peer = e, this.port1 = e, this.port2 = t;
211
349
  }
212
- }, Ie = new FinalizationRegistry((e) => {
350
+ }, nt = new FinalizationRegistry((e) => {
213
351
  try {
214
352
  e();
215
353
  } catch {}
216
- }), z = (e, t) => {
354
+ }), B = (e, t) => {
217
355
  let n = {};
218
- return Ie.register(e, t, n), () => Ie.unregister(n);
219
- }, Le = /* @__PURE__ */ t({
356
+ return nt.register(e, t, n), () => nt.unregister(n);
357
+ }, rt = /* @__PURE__ */ t({
220
358
  box: () => H,
221
359
  createRevivableChannel: () => W,
222
- init: () => Be,
223
- isType: () => Ve,
360
+ init: () => st,
361
+ isType: () => ct,
224
362
  revive: () => U,
225
- type: () => B
226
- }), B = "messagePort", Re = /* @__PURE__ */ new WeakMap(), ze = (e) => {
227
- let t = Re.get(e);
363
+ type: () => it
364
+ }), it = "messagePort", at = /* @__PURE__ */ new WeakMap(), ot = (e) => {
365
+ let t = at.get(e);
228
366
  if (!t) throw Error("osra message-port: connection state missing; did init() run?");
229
367
  return t;
230
- }, Be = (e) => {
368
+ }, st = (e) => {
231
369
  let t = { portHandlers: /* @__PURE__ */ new Map() };
232
- Re.set(e, t), e.eventTarget.addEventListener("message", ({ detail: e }) => {
370
+ at.set(e, t), e.eventTarget.addEventListener("message", ({ detail: e }) => {
233
371
  e.type !== "message" && e.type !== "message-port-close" || t.portHandlers.get(e.portId)?.(e);
372
+ }), I(e, () => {
373
+ for (let [n, r] of [...t.portHandlers]) r({
374
+ type: "message-port-close",
375
+ remoteUuid: e.remoteUuid,
376
+ portId: n
377
+ });
378
+ t.portHandlers.clear();
234
379
  });
235
- }, Ve = (e) => e instanceof MessagePort || e instanceof L, V = (e, t) => {
380
+ }, ct = (e) => e instanceof MessagePort || e instanceof R, V = (e, t) => {
236
381
  try {
237
382
  e.sendMessage({
238
383
  type: "message-port-close",
@@ -240,57 +385,63 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
240
385
  portId: t
241
386
  });
242
387
  } catch {}
243
- }, He = (e, t, n) => {
244
- n ? e.postMessage(t) : e.postMessage(t, Q(t));
388
+ }, lt = (e, t, n) => {
389
+ n ? e.postMessage(t) : e.postMessage(t, L(t));
245
390
  }, H = (e, t, n) => {
246
- let r = e instanceof L;
247
- if (!r && !E(t.transport)) return {
391
+ let r = e instanceof R;
392
+ if (!r && !k(t.transport)) return {
248
393
  ...N,
249
- type: B,
394
+ type: it,
250
395
  port: e,
251
396
  ...n?.autoBox ? { autoBox: !0 } : {}
252
397
  };
253
- let { portHandlers: i } = ze(t), a = e, o = globalThis.crypto.randomUUID(), s = !1, c = () => {
254
- s || (s = !0, i.delete(o), d?.(), a.removeEventListener("message", u));
255
- }, l = (e) => {
398
+ let { portHandlers: i } = ot(t), a = e, o = globalThis.crypto.randomUUID(), s = new WeakRef(a), c = new WeakRef(t), l = new WeakRef(i), u = !1, d = () => {
399
+ if (u) return;
400
+ u = !0, l.deref()?.delete(o), m?.();
401
+ let e = s.deref();
402
+ e?.removeEventListener("message", p), e instanceof R && (e._onClose = void 0);
403
+ }, f = (e) => {
256
404
  if (e.type === "message-port-close") {
257
- c(), a.close();
405
+ d(), a.dispatchEvent(new Event("close")), a.close();
258
406
  return;
259
407
  }
260
- He(a, X(e.data, t), !1);
408
+ lt(a, Z(e.data, t), !1);
261
409
  };
262
- function u({ data: e }) {
410
+ function p({ data: e }) {
263
411
  t.sendMessage({
264
412
  type: "message",
265
413
  remoteUuid: t.remoteUuid,
266
- data: Y(e, t),
414
+ data: X(e, t),
267
415
  portId: o
268
416
  });
269
417
  }
270
- let d = z(a, () => {
271
- V(t, o), c();
418
+ let m = B(a, () => {
419
+ let e = c.deref();
420
+ e && V(e, o), d();
272
421
  });
273
- return a.addEventListener("message", u), a.start(), a instanceof L && (a._onClose = () => {
274
- s || (V(t, o), c());
275
- }), i.set(o, l), {
422
+ return a.addEventListener("message", p), a.start(), a instanceof R && (a._onClose = () => {
423
+ u || (V(t, o), d());
424
+ }), i.set(o, f), {
276
425
  ...N,
277
- type: B,
426
+ type: it,
278
427
  portId: o,
279
428
  synthetic: r
280
429
  };
281
- }, U = (e, t) => "port" in e ? e.autoBox ? Ue(e.port, t) : e.port : We(e.portId, t, e.synthetic), Ue = (e, t) => {
430
+ }, U = (e, t) => "port" in e ? e.autoBox ? ut(e.port, t) : e.port : dt(e.portId, t, e.synthetic), ut = (e, t) => {
282
431
  let n = new EventTarget(), r = ({ data: e }) => {
283
- n.dispatchEvent(new MessageEvent("message", { data: X(e, t) }));
432
+ n.dispatchEvent(new MessageEvent("message", { data: Z(e, t) }));
433
+ }, i = () => {
434
+ n.dispatchEvent(new Event("close"));
284
435
  };
285
- return e.addEventListener("message", r), n.postMessage = (n, r) => {
286
- let i = Y(n, t), a = Q(i), o = Array.isArray(r) ? r : [];
436
+ return e.addEventListener("message", r), e.addEventListener("close", i), n.postMessage = (n, r) => {
437
+ let i = X(n, t), a = L(i), o = Array.isArray(r) ? r : [];
287
438
  e.postMessage(i, o.length ? [...a, ...o] : a);
288
439
  }, n.start = () => e.start(), n.close = () => {
289
- e.removeEventListener("message", r), e.close();
440
+ e.removeEventListener("message", r), e.removeEventListener("close", i), e.close();
290
441
  }, n;
291
442
  }, W = (e) => {
292
- if (E(e.transport)) {
293
- let { port1: t, port2: n } = new R();
443
+ if (k(e.transport)) {
444
+ let { port1: t, port2: n } = new z();
294
445
  return {
295
446
  localPort: t,
296
447
  boxedRemote: H(n, e)
@@ -298,18 +449,20 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
298
449
  }
299
450
  let { port1: t, port2: n } = new MessageChannel();
300
451
  return {
301
- localPort: Ue(t, e),
452
+ localPort: ut(t, e),
302
453
  boxedRemote: H(n, e, { autoBox: !0 })
303
454
  };
304
- }, We = (e, t, n) => {
305
- let { portHandlers: r } = ze(t), { port1: i, port2: a } = n ? new R() : new MessageChannel(), o = new WeakRef(i), s = new WeakRef(a), c = !1, l = () => {
455
+ }, dt = (e, t, n) => {
456
+ let { portHandlers: r } = ot(t), { port1: i, port2: a } = n ? new z() : new MessageChannel(), o = new WeakRef(i), s = new WeakRef(a), c = !1, l = () => {
306
457
  if (c) return;
307
458
  c = !0, r.delete(e);
308
459
  let t = s.deref();
309
460
  t?.removeEventListener("message", d), t?.close(), f?.();
310
461
  }, u = (e) => {
311
462
  if (e.type === "message-port-close") {
312
- l(), o.deref()?.close();
463
+ l();
464
+ let e = o.deref();
465
+ e?.dispatchEvent(new Event("close")), e?.close();
313
466
  return;
314
467
  }
315
468
  if (!o.deref()) {
@@ -317,27 +470,27 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
317
470
  return;
318
471
  }
319
472
  let r = s.deref();
320
- r && He(r, X(e.data, t), n);
473
+ r && lt(r, Z(e.data, t), n);
321
474
  }, d = ({ data: n }) => {
322
475
  t.sendMessage({
323
476
  type: "message",
324
477
  remoteUuid: t.remoteUuid,
325
- data: Y(n, t),
478
+ data: X(n, t),
326
479
  portId: e
327
480
  });
328
- }, f = z(i, () => {
481
+ }, f = B(i, () => {
329
482
  V(t, e), l();
330
483
  });
331
- return i instanceof L && (i._onClose = () => {
484
+ return i instanceof R && (i._onClose = () => {
332
485
  c || (V(t, e), l());
333
486
  }), a.addEventListener("message", d), a.start(), r.set(e, u), i;
334
- }, Ge = /* @__PURE__ */ t({
335
- box: () => Xe,
336
- isType: () => Ye,
337
- revive: () => Ze,
338
- type: () => Ke
339
- }), Ke = "promise", qe = (e) => e instanceof Promise, Je = /* @__PURE__ */ new Set(), Ye = (e) => e instanceof Promise, Xe = (e, t) => {
340
- if (!qe(e)) throw TypeError("Expected Promise");
487
+ }, ft = /* @__PURE__ */ t({
488
+ box: () => _t,
489
+ isType: () => gt,
490
+ revive: () => vt,
491
+ type: () => pt
492
+ }), pt = "promise", mt = (e) => e instanceof Promise, ht = /* @__PURE__ */ new Set(), gt = (e) => e instanceof Promise, _t = (e, t) => {
493
+ if (!mt(e)) throw TypeError("Expected Promise");
341
494
  let { localPort: n, boxedRemote: r } = W(t), i = (e) => {
342
495
  n.postMessage(e), n.close();
343
496
  };
@@ -349,23 +502,30 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
349
502
  error: e
350
503
  })), {
351
504
  ...N,
352
- type: Ke,
505
+ type: pt,
353
506
  port: r
354
507
  };
355
- }, Ze = (e, t) => {
508
+ }, vt = (e, t) => {
356
509
  let n = U(e.port, t);
357
- return Je.add(n), new Promise((e, t) => {
358
- n.addEventListener("message", ({ data: r }) => {
359
- r.type === "resolve" ? e(r.data) : t(r.error), n.close(), Je.delete(n);
510
+ ht.add(n);
511
+ let r = "portId" in e.port;
512
+ return new Promise((e, i) => {
513
+ let a = () => {
514
+ n.close(), ht.delete(n), o();
515
+ }, o = r ? I(t, () => {
516
+ i(/* @__PURE__ */ Error("osra: connection closed")), a();
517
+ }) : () => {};
518
+ n.addEventListener("message", ({ data: t }) => {
519
+ t.type === "resolve" ? e(t.data) : i(t.error), a();
360
520
  }, { once: !0 }), n.start();
361
521
  });
362
- }, Qe = /* @__PURE__ */ t({
522
+ }, yt = /* @__PURE__ */ t({
363
523
  box: () => G,
364
- isType: () => tt,
524
+ isType: () => St,
365
525
  revive: () => K,
366
- type: () => $e
367
- }), $e = "function", et = /* @__PURE__ */ new Set(), tt = (e) => typeof e == "function", G = (e, t) => {
368
- let { port1: n, port2: r } = new R();
526
+ type: () => bt
527
+ }), bt = "function", xt = /* @__PURE__ */ new Set(), St = (e) => typeof e == "function", G = (e, t) => {
528
+ let { port1: n, port2: r } = new z();
369
529
  return n.addEventListener("message", ({ data: n }) => {
370
530
  let [r, i] = n;
371
531
  (async () => {
@@ -381,8 +541,8 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
381
541
  error: e
382
542
  };
383
543
  }
384
- let a = Y(n, t);
385
- r.postMessage(a, Q(a)), queueMicrotask(() => {
544
+ let a = X(n, t);
545
+ r.postMessage(a, L(a)), queueMicrotask(() => {
386
546
  try {
387
547
  r.close();
388
548
  } catch {}
@@ -390,161 +550,215 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
390
550
  })();
391
551
  }), n.start(), {
392
552
  ...N,
393
- type: $e,
553
+ type: bt,
394
554
  port: H(r, t)
395
555
  };
396
556
  }, K = (e, t) => {
397
557
  let n = U(e.port, t);
398
558
  return ((...e) => new Promise((r, i) => {
399
- let { port1: a, port2: o } = new R();
400
- et.add(a), a.addEventListener("message", ({ data: e }) => {
559
+ let { port1: a, port2: o } = new z();
560
+ xt.add(a);
561
+ let s = () => {
562
+ a.close(), xt.delete(a), c();
563
+ }, c = I(t, () => {
564
+ i(/* @__PURE__ */ Error("osra: connection closed")), s();
565
+ });
566
+ a.addEventListener("message", ({ data: e }) => {
401
567
  let t = e;
402
- t.type === "return" ? r(t.value) : i(t.error), a.close(), et.delete(a);
568
+ t.type === "return" ? r(t.value) : i(t.error), s();
403
569
  }, { once: !0 }), a.start();
404
- let s = Y([o, e], t);
405
- n.postMessage(s, Q(s));
570
+ let l = X([o, e], t);
571
+ n.postMessage(l, L(l));
406
572
  }));
407
- }, nt = /* @__PURE__ */ t({
408
- box: () => at,
409
- isType: () => it,
410
- revive: () => ot,
411
- type: () => rt
412
- }), rt = "readableStream", it = (e) => e instanceof ReadableStream, at = (e, t) => {
573
+ }, Ct = /* @__PURE__ */ t({
574
+ box: () => Et,
575
+ isType: () => Tt,
576
+ revive: () => Dt,
577
+ type: () => wt
578
+ }), wt = "readableStream", Tt = (e) => e instanceof ReadableStream, Et = (e, t) => {
413
579
  let { localPort: n, boxedRemote: r } = W(t), i = e.getReader();
414
580
  return n.addEventListener("message", ({ data: e }) => {
415
- "type" in e && e.type === "pull" ? n.postMessage(i.read()) : (i.cancel(), n.close());
416
- }), n.start(), {
581
+ "type" in e && e.type === "pull" ? n.postMessage(i.read()) : (i.cancel("type" in e ? e.reason : void 0).catch(() => {}), n.close());
582
+ }), n.addEventListener("close", () => {
583
+ i.cancel(/* @__PURE__ */ Error("osra: connection closed")).catch(() => {});
584
+ }, { once: !0 }), n.start(), {
417
585
  ...N,
418
- type: rt,
586
+ type: wt,
419
587
  port: r
420
588
  };
421
- }, ot = (e, t) => {
589
+ }, Dt = (e, t) => {
422
590
  let n = U(e.port, t);
423
- return n.start(), new ReadableStream({
424
- pull: (e) => new Promise((t, r) => {
425
- n.addEventListener("message", ({ data: n }) => {
426
- n instanceof Promise && n.then((n) => {
427
- n.done ? e.close() : e.enqueue(n.value), t();
428
- }).catch(r);
591
+ n.start();
592
+ let r = !1;
593
+ return new ReadableStream({
594
+ start: (e) => {
595
+ n.addEventListener("close", () => {
596
+ if (!r) {
597
+ r = !0;
598
+ try {
599
+ e.error(/* @__PURE__ */ Error("osra: connection closed"));
600
+ } catch {}
601
+ }
602
+ }, { once: !0 });
603
+ },
604
+ pull: (e) => new Promise((t, i) => {
605
+ n.addEventListener("message", ({ data: a }) => {
606
+ a instanceof Promise && a.then((i) => {
607
+ i.done ? (r = !0, e.close(), n.postMessage({ type: "cancel" }), queueMicrotask(() => n.close())) : e.enqueue(i.value), t();
608
+ }).catch((e) => {
609
+ r = !0, i(e);
610
+ });
429
611
  }, { once: !0 }), n.postMessage({ type: "pull" });
430
612
  }),
431
- cancel: () => {
432
- n.postMessage({ type: "cancel" }), queueMicrotask(() => n.close());
613
+ cancel: (e) => {
614
+ r = !0, n.postMessage({
615
+ type: "cancel",
616
+ reason: e
617
+ }), queueMicrotask(() => n.close());
433
618
  }
434
619
  });
435
- }, st = /* @__PURE__ */ t({
436
- box: () => ut,
437
- isType: () => lt,
438
- revive: () => dt,
439
- type: () => ct
440
- }), ct = "writableStream", lt = (e) => e instanceof WritableStream, ut = (e, t) => {
441
- let { localPort: n, boxedRemote: r } = W(t), i = e.getWriter();
620
+ }, Ot = /* @__PURE__ */ t({
621
+ box: () => jt,
622
+ isType: () => At,
623
+ revive: () => Mt,
624
+ type: () => kt
625
+ }), kt = "writableStream", At = (e) => e instanceof WritableStream, jt = (e, t) => {
626
+ let { localPort: n, boxedRemote: r } = W(t), i = e.getWriter(), a = !1, o = (e, t) => e.then(() => n.postMessage({ type: "ack" })).catch((e) => n.postMessage({
627
+ type: "err",
628
+ error: e?.message ?? String(e)
629
+ })).then(() => {
630
+ t && (a = !0, queueMicrotask(() => n.close()));
631
+ });
442
632
  return n.addEventListener("message", ({ data: e }) => {
443
- !e || typeof e != "object" || !("type" in e) || (e.type === "write" ? i.write(e.chunk).then(() => n.postMessage({ type: "ack" })).catch((e) => n.postMessage({
444
- type: "err",
445
- error: e?.message ?? String(e)
446
- })) : e.type === "close" ? i.close().then(() => n.postMessage({ type: "ack" })).catch((e) => n.postMessage({
447
- type: "err",
448
- error: e?.message ?? String(e)
449
- })) : e.type === "abort" && i.abort(e.reason).then(() => n.postMessage({ type: "ack" })).catch((e) => n.postMessage({
450
- type: "err",
451
- error: e?.message ?? String(e)
452
- })));
453
- }), n.start(), {
633
+ !e || typeof e != "object" || !("type" in e) || (e.type === "write" ? o(i.write(e.chunk), !1) : e.type === "close" ? o(i.close(), !0) : e.type === "abort" && o(i.abort(e.reason), !0));
634
+ }), n.addEventListener("close", () => {
635
+ a || (a = !0, i.abort(/* @__PURE__ */ Error("osra: connection closed")).catch(() => {}));
636
+ }, { once: !0 }), n.start(), {
454
637
  ...N,
455
- type: ct,
638
+ type: kt,
456
639
  port: r
457
640
  };
458
- }, dt = (e, t) => {
641
+ }, Mt = (e, t) => {
459
642
  let n = U(e.port, t);
460
643
  n.start();
461
- let r = Promise.resolve(), i = (e) => {
462
- let t = r.then(() => new Promise((t, r) => {
463
- n.addEventListener("message", ({ data: e }) => {
464
- !e || typeof e != "object" || !("type" in e) || (e.type === "ack" ? t() : e.type === "err" && r(Error(e.error)));
644
+ let r = /* @__PURE__ */ new Set(), i = !1;
645
+ n.addEventListener("close", () => {
646
+ i = !0;
647
+ let e = /* @__PURE__ */ Error("osra: connection closed");
648
+ for (let t of [...r]) t(e);
649
+ r.clear();
650
+ }, { once: !0 });
651
+ let a = Promise.resolve(), o = (e) => {
652
+ let t = a.then(() => new Promise((t, a) => {
653
+ if (i) {
654
+ a(/* @__PURE__ */ Error("osra: connection closed"));
655
+ return;
656
+ }
657
+ let o = (e) => {
658
+ r.delete(a), e();
659
+ };
660
+ r.add(a), n.addEventListener("message", ({ data: e }) => {
661
+ !e || typeof e != "object" || !("type" in e) || (e.type === "ack" ? o(t) : e.type === "err" && o(() => a(Error(e.error))));
465
662
  }, { once: !0 }), n.postMessage(e);
466
663
  }));
467
- return r = t.catch(() => {}), t;
664
+ return a = t.catch(() => {}), t;
468
665
  };
469
666
  return new WritableStream({
470
- write: (e) => i({
667
+ write: (e) => o({
471
668
  type: "write",
472
669
  chunk: e
473
670
  }),
474
- close: () => i({ type: "close" }),
475
- abort: (e) => i({
671
+ close: () => o({ type: "close" }),
672
+ abort: (e) => o({
476
673
  type: "abort",
477
674
  reason: e
478
675
  })
479
676
  });
480
- }, ft = /* @__PURE__ */ t({
481
- box: () => ht,
482
- isType: () => mt,
483
- revive: () => gt,
484
- type: () => pt
485
- }), pt = "abortSignal", mt = (e) => e instanceof AbortSignal, ht = (e, t) => {
486
- let { localPort: n, boxedRemote: r } = W(t);
487
- return e.aborted ? n.close() : e.addEventListener("abort", () => {
677
+ }, Nt = /* @__PURE__ */ t({
678
+ box: () => Lt,
679
+ isType: () => Ft,
680
+ revive: () => Rt,
681
+ type: () => Pt
682
+ }), Pt = "abortSignal", Ft = (e) => e instanceof AbortSignal, It = /* @__PURE__ */ new WeakMap(), Lt = (e, t) => {
683
+ if (e.aborted) return {
684
+ ...N,
685
+ type: Pt,
686
+ aborted: !0,
687
+ reason: X(e.reason, t)
688
+ };
689
+ let { localPort: n, boxedRemote: r } = W(t), i = () => {
488
690
  n.postMessage({
489
691
  type: "abort",
490
692
  reason: e.reason
491
- }), n.close();
492
- }, { once: !0 }), {
693
+ }), n.close(), a();
694
+ }, a = I(t, () => {
695
+ e.removeEventListener("abort", i), n.close();
696
+ });
697
+ return e.addEventListener("abort", i, { once: !0 }), {
493
698
  ...N,
494
- type: pt,
495
- aborted: e.aborted,
496
- reason: e.aborted ? Y(e.reason, t) : void 0,
699
+ type: Pt,
700
+ aborted: !1,
701
+ reason: void 0,
497
702
  port: r
498
703
  };
499
- }, gt = (e, t) => {
704
+ }, Rt = (e, t) => {
500
705
  let n = new AbortController();
501
- if (e.aborted) return n.abort(X(e.reason, t)), n.signal;
706
+ if (e.aborted || e.port === void 0) return n.abort(Z(e.reason, t)), n.signal;
502
707
  let r = U(e.port, t);
503
- return r.start(), r.addEventListener("message", ({ data: e }) => {
504
- e.type === "abort" && (n.abort(X(e.reason, t)), r.close());
708
+ return It.set(n.signal, r), r.start(), r.addEventListener("message", ({ data: e }) => {
709
+ e.type === "abort" && (n.abort(Z(e.reason, t)), It.delete(n.signal), r.close());
505
710
  }), n.signal;
506
- }, _t = /* @__PURE__ */ t({
507
- box: () => bt,
508
- isType: () => yt,
509
- revive: () => xt,
510
- type: () => vt
511
- }), vt = "response", yt = (e) => e instanceof Response, bt = (e, t) => ({
711
+ }, zt = /* @__PURE__ */ t({
712
+ box: () => Ht,
713
+ isType: () => Vt,
714
+ revive: () => Ut,
715
+ type: () => Bt
716
+ }), Bt = "response", Vt = (e) => e instanceof Response, Ht = (e, t) => ({
512
717
  ...N,
513
- type: vt,
718
+ type: Bt,
514
719
  status: e.status,
515
720
  statusText: e.statusText,
516
- headers: we(e.headers, t),
517
- body: e.body ? at(e.body, t) : null,
721
+ headers: ke(e.headers, t),
722
+ body: e.body ? Et(e.body, t) : null,
518
723
  url: e.url,
519
724
  redirected: e.redirected
520
- }), xt = (e, t) => {
521
- let n = Te(e.headers, t), r = e.body ? ot(e.body, t) : null;
522
- return new Response(r, {
725
+ }), Ut = (e, t) => {
726
+ if (e.status === 0) return Response.error();
727
+ let n = Ae(e.headers, t), r = e.body ? Dt(e.body, t) : null, i = new Response(r, {
523
728
  status: e.status,
524
729
  statusText: e.statusText,
525
730
  headers: n
526
731
  });
527
- }, St = /* @__PURE__ */ t({
528
- box: () => Tt,
529
- isType: () => wt,
530
- revive: () => Et,
531
- type: () => Ct
532
- }), Ct = "request", wt = (e) => e instanceof Request, Tt = (e, t) => ({
732
+ return e.url && Object.defineProperty(i, "url", {
733
+ value: e.url,
734
+ configurable: !0
735
+ }), e.redirected && Object.defineProperty(i, "redirected", {
736
+ value: !0,
737
+ configurable: !0
738
+ }), i;
739
+ }, Wt = /* @__PURE__ */ t({
740
+ box: () => qt,
741
+ isType: () => Kt,
742
+ revive: () => Jt,
743
+ type: () => Gt
744
+ }), Gt = "request", Kt = (e) => e instanceof Request, qt = (e, t) => ({
533
745
  ...N,
534
- type: Ct,
746
+ type: Gt,
535
747
  method: e.method,
536
748
  url: e.url,
537
- headers: we(e.headers, t),
538
- body: e.body ? at(e.body, t) : null,
749
+ headers: ke(e.headers, t),
750
+ body: e.body ? Et(e.body, t) : null,
539
751
  credentials: e.credentials,
540
752
  cache: e.cache,
753
+ mode: e.mode,
541
754
  redirect: e.redirect,
542
755
  referrer: e.referrer,
543
756
  referrerPolicy: e.referrerPolicy,
544
757
  integrity: e.integrity,
545
- keepalive: e.keepalive
546
- }), Et = (e, t) => {
547
- let n = Te(e.headers, t), r = {
758
+ keepalive: e.keepalive,
759
+ signal: Lt(e.signal, t)
760
+ }), Jt = (e, t) => {
761
+ let n = Ae(e.headers, t), r = {
548
762
  method: e.method,
549
763
  headers: n,
550
764
  credentials: e.credentials,
@@ -553,31 +767,32 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
553
767
  referrer: e.referrer,
554
768
  referrerPolicy: e.referrerPolicy,
555
769
  integrity: e.integrity,
556
- keepalive: e.keepalive
770
+ keepalive: e.keepalive,
771
+ signal: Rt(e.signal, t)
557
772
  };
558
- return e.body && (r.body = ot(e.body, t), r.duplex = "half"), new Request(e.url, r);
559
- }, Dt = /* @__PURE__ */ t({
560
- box: () => zt,
561
- boxByReference: () => Bt,
562
- identity: () => J,
563
- isType: () => Lt,
564
- revive: () => Vt,
773
+ return e.mode !== "navigate" && (r.mode = e.mode), e.body && (r.body = Dt(e.body, t), r.duplex = "half"), new Request(e.url, r);
774
+ }, Yt = /* @__PURE__ */ t({
775
+ box: () => sn,
776
+ boxByReference: () => cn,
777
+ identity: () => Y,
778
+ isType: () => an,
779
+ revive: () => ln,
565
780
  type: () => q
566
- }), q = "identity", Ot = Symbol.for("osra.identity"), kt = (e) => e !== null && (typeof e == "object" || typeof e == "function"), At = (e) => {
781
+ }), q = "identity", Xt = Symbol.for("osra.identity"), Zt = (e) => e !== null && (typeof e == "object" || typeof e == "function"), J = (e) => {
567
782
  if (e === null) return !1;
568
783
  let t = typeof e;
569
784
  return t === "object" || t === "function" ? !0 : t === "symbol" ? Symbol.keyFor(e) === void 0 : !1;
570
- }, jt = (e) => kt(e) && Ot in e && e[Ot] === !0, Mt = /* @__PURE__ */ new WeakMap(), Nt = (e) => {
571
- if (jt(e)) return e;
572
- let t = Mt.get(e);
785
+ }, Qt = (e) => Zt(e) && Xt in e && e[Xt] === !0, $t = /* @__PURE__ */ new WeakMap(), en = (e) => {
786
+ if (Qt(e)) return e;
787
+ let t = $t.get(e);
573
788
  if (t) return t;
574
789
  let n = {
575
- [Ot]: !0,
790
+ [Xt]: !0,
576
791
  value: e
577
792
  };
578
- return Mt.set(e, n), n;
579
- }, J = (e) => kt(e) ? Nt(e) : e, Pt = /* @__PURE__ */ new WeakMap(), Ft = (e) => {
580
- let t = Pt.get(e);
793
+ return $t.set(e, n), n;
794
+ }, Y = (e) => Zt(e) ? en(e) : e, tn = /* @__PURE__ */ new WeakMap(), nn = (e) => {
795
+ let t = tn.get(e);
581
796
  if (t) return t;
582
797
  let n = /* @__PURE__ */ new WeakMap(), r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new WeakMap(), o = {
583
798
  sendIds: n,
@@ -596,14 +811,16 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
596
811
  revivedToId: a,
597
812
  listenerInstalled: !1
598
813
  };
599
- return Pt.set(e, o), It(e, o), o;
600
- }, It = (e, t) => {
814
+ return tn.set(e, o), rn(e, o), I(e, () => {
815
+ o.receiveCache.clear(), o.idToSent.clear();
816
+ }), o;
817
+ }, rn = (e, t) => {
601
818
  t.listenerInstalled || (t.listenerInstalled = !0, e.eventTarget.addEventListener("message", ({ detail: e }) => {
602
819
  if (e?.type !== "identity-dispose") return;
603
820
  let n = t.receiveCache.get(e.id);
604
- t.receiveCache.delete(e.id), n !== void 0 && At(n) && t.revivedToId.delete(n);
821
+ t.receiveCache.delete(e.id), n !== void 0 && J(n) && t.revivedToId.delete(n);
605
822
  }));
606
- }, Lt = (e) => jt(e), Rt = (e, t) => {
823
+ }, an = (e) => Qt(e), on = (e, t) => {
607
824
  let n = t.sendIds.get(e);
608
825
  if (n !== void 0) return {
609
826
  id: n,
@@ -619,15 +836,15 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
619
836
  id: i,
620
837
  isExisting: !1
621
838
  };
622
- }, zt = (e, t) => {
623
- let n = Ft(t), r = e.value, i = Y(r, t);
624
- if (!At(r)) return {
839
+ }, sn = (e, t) => {
840
+ let n = nn(t), r = e.value, i = X(r, t);
841
+ if (!J(r)) return {
625
842
  ...N,
626
843
  type: q,
627
844
  id: globalThis.crypto.randomUUID(),
628
845
  inner: i
629
846
  };
630
- let { id: a, isExisting: o } = Rt(r, n);
847
+ let { id: a, isExisting: o } = on(r, n);
631
848
  return o ? {
632
849
  ...N,
633
850
  type: q,
@@ -638,8 +855,8 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
638
855
  id: a,
639
856
  inner: i
640
857
  };
641
- }, Bt = (e, t, n) => {
642
- let { id: r, isExisting: i } = Rt(e, Ft(n));
858
+ }, cn = (e, t, n) => {
859
+ let { id: r, isExisting: i } = on(e, nn(n));
643
860
  return i ? {
644
861
  ...N,
645
862
  type: q,
@@ -650,77 +867,55 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
650
867
  id: r,
651
868
  inner: t
652
869
  };
653
- }, Vt = (e, t) => {
654
- let n = Ft(t), r = n.receiveCache.get(e.id);
870
+ }, ln = (e, t) => {
871
+ let n = nn(t), r = n.receiveCache.get(e.id);
655
872
  if (r !== void 0) return r;
656
873
  let i = n.idToSent.get(e.id)?.deref();
657
874
  if (i !== void 0) return i;
658
875
  if (!("inner" in e) || e.inner === void 0) throw Error(`osra identity: received id=${e.id} with no inner payload and no cached value`);
659
- let a = X(e.inner, t);
660
- return n.receiveCache.set(e.id, a), At(a) && n.revivedToId.set(a, e.id), a;
661
- }, Ht = /* @__PURE__ */ t({
662
- box: () => Xt,
663
- isType: () => Yt,
664
- revive: () => Zt,
665
- transfer: () => Jt,
666
- type: () => Ut
667
- }), Ut = "transfer", Wt = Symbol.for("osra.transfer"), Gt = (e) => typeof e == "object" && !!e, Kt = (e) => Gt(e) && Wt in e && e[Wt] === !0, qt = (e) => Gt(e) ? ArrayBuffer.isView(e) ? !0 : v(e, [
668
- globalThis.ArrayBuffer,
669
- globalThis.MessagePort,
670
- globalThis.ReadableStream,
671
- globalThis.WritableStream,
672
- globalThis.TransformStream,
673
- globalThis.ImageBitmap,
674
- globalThis.OffscreenCanvas
675
- ]) : !1, Jt = (e) => qt(e) ? {
676
- [Wt]: !0,
677
- value: e
678
- } : e, Yt = (e) => Kt(e), Xt = (e, t) => ({
679
- ...N,
680
- type: Ut,
681
- inner: Y(e.value, t),
682
- degraded: E(t.transport)
683
- }), Zt = (e, t) => X(e.inner, t), Qt = /* @__PURE__ */ t({
684
- box: () => en,
685
- isType: () => $t,
686
- revive: () => tn,
876
+ let a = Z(e.inner, t);
877
+ return n.receiveCache.set(e.id, a), J(a) && n.revivedToId.set(a, e.id), a;
878
+ }, un = /* @__PURE__ */ t({
879
+ box: () => fn,
880
+ isType: () => dn,
881
+ revive: () => pn,
687
882
  type: () => "map"
688
- }), $t = (e) => e instanceof Map, en = (e, t) => ({
883
+ }), dn = (e) => e instanceof Map, fn = (e, t) => ({
689
884
  ...N,
690
885
  type: "map",
691
- entries: Array.from(e, ([e, n]) => [Y(e, t), Y(n, t)])
692
- }), tn = (e, t) => new Map(e.entries.map(([e, n]) => [X(e, t), X(n, t)])), nn = /* @__PURE__ */ t({
693
- box: () => an,
694
- isType: () => rn,
695
- revive: () => on,
886
+ entries: Array.from(e, ([e, n]) => [X(e, t), X(n, t)])
887
+ }), pn = (e, t) => new Map(e.entries.map(([e, n]) => [Z(e, t), Z(n, t)])), mn = /* @__PURE__ */ t({
888
+ box: () => gn,
889
+ isType: () => hn,
890
+ revive: () => _n,
696
891
  type: () => "set"
697
- }), rn = (e) => e instanceof Set, an = (e, t) => ({
892
+ }), hn = (e) => e instanceof Set, gn = (e, t) => ({
698
893
  ...N,
699
894
  type: "set",
700
- values: Array.from(e, (e) => Y(e, t))
701
- }), on = (e, t) => new Set(e.values.map((e) => X(e, t))), sn = /* @__PURE__ */ t({
702
- box: () => un,
703
- isType: () => ln,
704
- revive: () => dn,
705
- type: () => cn
706
- }), cn = "bigint", ln = (e) => typeof e == "bigint", un = (e, t) => ({
895
+ values: Array.from(e, (e) => X(e, t))
896
+ }), _n = (e, t) => new Set(e.values.map((e) => Z(e, t))), vn = /* @__PURE__ */ t({
897
+ box: () => xn,
898
+ isType: () => bn,
899
+ revive: () => Sn,
900
+ type: () => yn
901
+ }), yn = "bigint", bn = (e) => typeof e == "bigint", xn = (e, t) => ({
707
902
  ...N,
708
- type: cn,
903
+ type: yn,
709
904
  value: e.toString()
710
- }), dn = (e, t) => BigInt(e.value), fn = /* @__PURE__ */ t({
711
- box: () => hn,
712
- isType: () => mn,
713
- revive: () => gn,
714
- type: () => pn
715
- }), pn = "event", mn = (e) => e instanceof Event, hn = (e, t) => ({
905
+ }), Sn = (e, t) => BigInt(e.value), Cn = /* @__PURE__ */ t({
906
+ box: () => En,
907
+ isType: () => Tn,
908
+ revive: () => Dn,
909
+ type: () => wn
910
+ }), wn = "event", Tn = (e) => e instanceof Event, En = (e, t) => ({
716
911
  ...N,
717
- type: pn,
912
+ type: wn,
718
913
  eventType: e.type,
719
914
  bubbles: e.bubbles,
720
915
  cancelable: e.cancelable,
721
916
  composed: e.composed,
722
- ...e instanceof CustomEvent ? { detail: Y(e.detail, t) } : {}
723
- }), gn = (e, t) => {
917
+ ...e instanceof CustomEvent ? { detail: X(e.detail, t) } : {}
918
+ }), Dn = (e, t) => {
724
919
  let n = {
725
920
  bubbles: e.bubbles,
726
921
  cancelable: e.cancelable,
@@ -728,70 +923,119 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
728
923
  };
729
924
  return "detail" in e ? new CustomEvent(e.eventType, {
730
925
  ...n,
731
- detail: X(e.detail, t)
926
+ detail: Z(e.detail, t)
732
927
  }) : new Event(e.eventType, n);
733
- }, _n = /* @__PURE__ */ t({
734
- box: () => bn,
735
- isType: () => yn,
736
- revive: () => wn,
737
- type: () => vn
738
- }), vn = "eventTarget", yn = (e) => e instanceof EventTarget, bn = (e, t) => ({
739
- ...N,
740
- type: vn,
741
- addListener: G((t, n, r) => e.addEventListener(t, n, r), t),
742
- removeListener: G((t, n, r) => e.removeEventListener(t, n, r), t)
743
- }), xn = /* @__PURE__ */ new WeakMap(), Sn = (e) => {
928
+ }, On = /* @__PURE__ */ t({
929
+ box: () => jn,
930
+ isType: () => An,
931
+ revive: () => Fn,
932
+ type: () => kn
933
+ }), kn = "eventTarget", An = (e) => e instanceof EventTarget, jn = (e, t) => {
934
+ let n = [], r = (e) => typeof e == "boolean" ? e : !!e?.capture;
935
+ return {
936
+ ...N,
937
+ type: kn,
938
+ addListener: G((t, i, a) => {
939
+ n.push({
940
+ eventType: t,
941
+ listener: i,
942
+ capture: r(a)
943
+ }), e.addEventListener(t, i, a);
944
+ }, t),
945
+ removeListener: G((t, i, a) => {
946
+ let o = r(a), s = n.findIndex((e) => e.eventType === t && e.listener === i && e.capture === o);
947
+ s !== -1 && n.splice(s, 1), e.removeEventListener(t, i, a);
948
+ }, t),
949
+ removeAllListeners: G(() => {
950
+ for (let { eventType: t, listener: r, capture: i } of n.splice(0)) e.removeEventListener(t, r, { capture: i });
951
+ }, t)
952
+ };
953
+ }, Mn = /* @__PURE__ */ new WeakMap(), Nn = (e) => {
744
954
  if (typeof e == "function") return e;
745
- let t = xn.get(e);
746
- return t || xn.set(e, t = (t) => e.handleEvent(t)), t;
747
- }, Cn = (e, t, n, r) => e.find((e) => e.eventType === t && e.listener === n && e.capture === r), wn = (e, t) => {
748
- let n = K(e.addListener, t), r = K(e.removeListener, t), i = new EventTarget(), a = [];
749
- return Object.defineProperty(i, "addEventListener", { value: (e, t, r) => {
955
+ let t = Mn.get(e);
956
+ return t || Mn.set(e, t = (t) => e.handleEvent(t)), t;
957
+ }, Pn = (e, t, n, r) => e.find((e) => e.eventType === t && e.listener === n && e.capture === r), Fn = (e, t) => {
958
+ let n = K(e.addListener, t), r = K(e.removeListener, t), i = K(e.removeAllListeners, t), a = new EventTarget(), o = [], s = (e) => {
959
+ let t = o.indexOf(e);
960
+ t !== -1 && o.splice(t, 1);
961
+ };
962
+ return Object.defineProperty(a, "addEventListener", { value: (e, t, r) => {
750
963
  if (t === null) return;
751
- let i = Sn(t), o = typeof r == "boolean" ? r : !!r?.capture;
752
- Cn(a, e, i, o) || (a.push({
964
+ let i = Nn(t), a = typeof r == "boolean" ? r : !!r?.capture;
965
+ if (Pn(o, e, i, a)) return;
966
+ let c = typeof r == "object" && r?.once ? (e) => (s(l), i(e)) : i, l = {
753
967
  eventType: e,
754
968
  listener: i,
755
- capture: o
756
- }), n(e, J(i), r).catch(() => {}));
757
- } }), Object.defineProperty(i, "removeEventListener", { value: (e, t, n) => {
969
+ capture: a,
970
+ wire: c
971
+ };
972
+ o.push(l), (typeof r == "object" ? r?.signal : void 0)?.addEventListener("abort", () => s(l), { once: !0 }), n(e, Y(c), r).catch(() => {});
973
+ } }), Object.defineProperty(a, "removeEventListener", { value: (e, t, n) => {
758
974
  if (t === null) return;
759
- let i = Sn(t), o = typeof n == "boolean" ? n : !!n?.capture, s = Cn(a, e, i, o);
760
- s && (a.splice(a.indexOf(s), 1), r(e, J(i), { capture: o }).catch(() => {}));
761
- } }), z(i, () => {
762
- for (let { eventType: e, listener: t, capture: n } of a) r(e, J(t), { capture: n }).catch(() => {});
763
- a.length = 0;
764
- }), i;
765
- }, Tn = /* @__PURE__ */ t({
766
- box: () => kn,
767
- isType: () => Dn,
768
- revive: () => An,
769
- type: () => En
770
- }), En = "blob", Dn = (e) => e instanceof Blob, On = (e) => typeof File < "u" && e instanceof File, kn = (e, t) => ({
975
+ let i = Nn(t), a = typeof n == "boolean" ? n : !!n?.capture, c = Pn(o, e, i, a);
976
+ c && (s(c), r(e, Y(c.wire), { capture: a }).catch(() => {}));
977
+ } }), B(a, () => {
978
+ i().catch(() => {});
979
+ }), a;
980
+ }, In = /* @__PURE__ */ t({
981
+ box: () => Bn,
982
+ isType: () => Rn,
983
+ revive: () => Vn,
984
+ type: () => Ln
985
+ }), Ln = "blob", Rn = (e) => e instanceof Blob, zn = (e) => typeof File < "u" && e instanceof File, Bn = (e, t) => ({
771
986
  ...N,
772
- type: En,
987
+ type: Ln,
773
988
  mimeType: e.type,
774
- buffer: Xe(e.arrayBuffer(), t),
775
- ...On(e) ? {
989
+ buffer: _t(e.arrayBuffer(), t),
990
+ ...zn(e) ? {
776
991
  fileName: e.name,
777
992
  lastModified: e.lastModified
778
993
  } : {}
779
- }), An = (e, t) => Ze(e.buffer, t).then((t) => e.fileName !== void 0 && typeof File < "u" ? new File([t], e.fileName, {
994
+ }), Vn = (e, t) => vt(e.buffer, t).then((t) => e.fileName !== void 0 && typeof File < "u" ? new File([t], e.fileName, {
780
995
  type: e.mimeType,
781
996
  lastModified: e.lastModified
782
- }) : new Blob([t], { type: e.mimeType })), jn = /* @__PURE__ */ t({
783
- box: () => Pn,
784
- isType: () => Nn,
785
- revive: () => Fn,
786
- type: () => Mn
787
- }), Mn = "symbol", Nn = (e) => typeof e == "symbol", Pn = (e, t) => {
788
- let n = {
997
+ }) : new Blob([t], { type: e.mimeType })), Hn = /* @__PURE__ */ t({
998
+ box: () => Gn,
999
+ isType: () => Wn,
1000
+ revive: () => Kn,
1001
+ type: () => Un
1002
+ }), Un = "symbol", Wn = (e) => typeof e == "symbol", Gn = (e, t) => {
1003
+ let n = Symbol.keyFor(e);
1004
+ return n === void 0 ? cn(e, {
789
1005
  ...N,
790
- type: Mn,
1006
+ type: Un,
791
1007
  description: e.description
1008
+ }, t) : {
1009
+ ...N,
1010
+ type: Un,
1011
+ registryKey: n
1012
+ };
1013
+ }, Kn = (e, t) => "registryKey" in e ? Symbol.for(e.registryKey) : Symbol(e.description), qn = /* @__PURE__ */ t({
1014
+ box: () => Xn,
1015
+ isType: () => Yn,
1016
+ revive: () => Zn,
1017
+ type: () => Jn
1018
+ }), Jn = "asyncIterator", Yn = (e) => !e || typeof e != "object" || typeof ReadableStream < "u" && e instanceof ReadableStream ? !1 : typeof e[Symbol.asyncIterator] == "function", Xn = (e, t) => {
1019
+ let n = e[Symbol.asyncIterator]();
1020
+ return {
1021
+ ...N,
1022
+ type: Jn,
1023
+ next: G(((e) => n.next(e)), t),
1024
+ return: G(((e) => n.return?.(e) ?? Promise.resolve({
1025
+ done: !0,
1026
+ value: e
1027
+ })), t),
1028
+ throw: G(((e) => n.throw?.(e) ?? Promise.reject(e)), t)
1029
+ };
1030
+ }, Zn = (e, t) => {
1031
+ let n = K(e.next, t), r = K(e.return, t), i = K(e.throw, t), a = {
1032
+ next: (...e) => n(...e),
1033
+ return: (e) => r(e),
1034
+ throw: (e) => i(e),
1035
+ [Symbol.asyncIterator]: () => a
792
1036
  };
793
- return e.description === void 0 ? Bt(e, n, t) : n;
794
- }, Fn = (e, t) => Symbol(e.description), In = [
1037
+ return a;
1038
+ }, Qn = [
795
1039
  globalThis.File,
796
1040
  globalThis.FileList,
797
1041
  globalThis.RegExp,
@@ -811,7 +1055,7 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
811
1055
  globalThis.FileSystemFileHandle,
812
1056
  globalThis.FileSystemDirectoryHandle,
813
1057
  globalThis.RTCCertificate
814
- ], Ln = [
1058
+ ], $n = [
815
1059
  globalThis.CropTarget,
816
1060
  globalThis.EncodedAudioChunk,
817
1061
  globalThis.EncodedVideoChunk,
@@ -822,65 +1066,85 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
822
1066
  globalThis.RTCEncodedAudioFrame,
823
1067
  globalThis.RTCEncodedVideoFrame,
824
1068
  globalThis.WebTransportError
825
- ], Rn = {
1069
+ ], er = {
826
1070
  type: "clonable",
827
1071
  capableOnly: !0,
828
- isType: (e) => v(e, In) || v(e, Ln),
1072
+ isType: (e) => C(e, Qn) || C(e, $n),
829
1073
  box: (e, t) => e,
830
1074
  revive: (e, t) => e
831
- }, zn = [
1075
+ }, tr = [
832
1076
  globalThis.ImageBitmap,
833
1077
  globalThis.OffscreenCanvas,
834
1078
  globalThis.WritableStream,
835
1079
  globalThis.TransformStream,
836
1080
  globalThis.MediaStreamTrack,
837
1081
  globalThis.RTCDataChannel
838
- ], Bn = [
1082
+ ], nr = [
839
1083
  globalThis.AudioData,
840
1084
  globalThis.VideoFrame,
841
1085
  globalThis.MediaSourceHandle,
842
1086
  globalThis.MIDIAccess,
843
1087
  globalThis.WebTransportReceiveStream,
844
1088
  globalThis.WebTransportSendStream
845
- ], Vn = {
1089
+ ], rr = {
846
1090
  type: "transferable",
847
1091
  capableOnly: !0,
848
- isType: (e) => v(e, zn) || v(e, Bn),
1092
+ isType: (e) => C(e, tr) || C(e, nr),
849
1093
  box: (e, t) => e,
850
1094
  revive: (e, t) => e
851
- }, Hn = (e) => {
1095
+ }, ir = (e) => {
852
1096
  if (typeof e != "object" || !e) return !1;
853
1097
  let t = Object.getPrototypeOf(e);
854
1098
  return t === Object.prototype || t === null;
855
- }, Un = [
856
- Ht,
857
- Dt,
858
- de,
1099
+ }, ar = [
1100
+ We,
1101
+ Yt,
859
1102
  ge,
860
1103
  xe,
861
1104
  Ee,
862
1105
  je,
863
- Tn,
864
- Ge,
865
- Qe,
866
1106
  Le,
867
- nt,
868
- st,
1107
+ In,
869
1108
  ft,
870
- _t,
871
- St,
872
- Qt,
873
- nn,
874
- sn,
875
- jn,
876
- fn,
877
- Rn,
878
- Vn,
879
- _n,
1109
+ yt,
1110
+ rt,
1111
+ Ct,
1112
+ Ot,
1113
+ Nt,
1114
+ zt,
1115
+ Wt,
1116
+ un,
1117
+ mn,
1118
+ vn,
1119
+ Hn,
1120
+ Cn,
1121
+ qn,
1122
+ {
1123
+ type: "nonFiniteNumber",
1124
+ isType: (e) => typeof e == "number" && !Number.isFinite(e),
1125
+ box: (e, t) => k(t.transport) ? {
1126
+ ...N,
1127
+ type: "nonFiniteNumber",
1128
+ value: String(e)
1129
+ } : e,
1130
+ revive: (e, t) => Number(e.value)
1131
+ },
1132
+ {
1133
+ type: "undefined",
1134
+ isType: (e) => e === void 0,
1135
+ box: (e, t) => k(t.transport) ? {
1136
+ ...N,
1137
+ type: "undefined"
1138
+ } : e,
1139
+ revive: (e, t) => void 0
1140
+ },
1141
+ er,
1142
+ rr,
1143
+ On,
880
1144
  {
881
1145
  type: "unclonable",
882
1146
  isType: (e) => {
883
- if (typeof e != "object" || !e || Array.isArray(e) || Hn(e)) return !1;
1147
+ if (typeof e != "object" || !e || Array.isArray(e) || ir(e)) return !1;
884
1148
  try {
885
1149
  return structuredClone(e), !1;
886
1150
  } catch {
@@ -893,28 +1157,39 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
893
1157
  }),
894
1158
  revive: (e, t) => ({})
895
1159
  }
896
- ], Wn = (e, t) => t.find((t) => t.isType(e)), Gn = (e, t) => t.find((t) => t.type === e.type), Kn = (e) => !!e && typeof e == "object" && Object.getPrototypeOf(e) === Object.prototype, qn = (e, t) => Array.isArray(e) ? e.map((e) => t(e)) : Kn(e) ? Object.fromEntries(Object.entries(e).map(([e, n]) => [e, t(n)])) : e, Jn = (e, t) => {
897
- let n = Wn(e, t.revivableModules);
898
- return n ? n.box(e, t) : e;
899
- }, Y = (e, t) => {
1160
+ ], or = (e, t) => t.find((t) => t.isType(e)), sr = (e, t) => t.find((t) => t.type === e.type), cr = (e) => !!e && typeof e == "object" && Object.getPrototypeOf(e) === Object.prototype, lr = (e, t) => Array.isArray(e) ? e.map((e) => t(e)) : cr(e) ? Object.fromEntries(Object.entries(e).map(([e, n]) => [e, t(n)])) : e, ur = /* @__PURE__ */ new WeakSet(), dr = /* @__PURE__ */ new WeakSet(), fr = (e) => e !== null && (typeof e == "object" || typeof e == "function"), X = (e, t) => {
900
1161
  if (P(e)) return e;
901
- let n = Wn(e, t.revivableModules);
902
- return n ? n.box(e, t) : qn(e, (e) => Y(e, t));
903
- }, Yn = (e, t) => {
904
- if (!P(e)) return e;
905
- let n = Gn(e, t.revivableModules);
906
- return n ? n.revive(e, t) : e;
907
- }, X = (e, t) => {
908
- if (P(e)) {
909
- let n = Gn(e, t.revivableModules);
910
- if (n) return n.revive(e, t);
1162
+ let n = fr(e);
1163
+ if (n) {
1164
+ if (ur.has(e)) throw TypeError("osra: cannot serialize a circular structure — break the cycle or send the container by reference");
1165
+ ur.add(e);
1166
+ }
1167
+ try {
1168
+ let n = or(e, t.revivableModules);
1169
+ return n ? n.box(e, t) : lr(e, (e) => X(e, t));
1170
+ } finally {
1171
+ n && ur.delete(e);
1172
+ }
1173
+ }, Z = (e, t) => {
1174
+ let n = fr(e);
1175
+ if (n) {
1176
+ if (dr.has(e)) throw TypeError("osra: cannot revive a circular structure");
1177
+ dr.add(e);
1178
+ }
1179
+ try {
1180
+ if (P(e)) {
1181
+ let n = sr(e, t.revivableModules);
1182
+ if (n) return n.revive(e, t);
1183
+ }
1184
+ return lr(e, (e) => Z(e, t));
1185
+ } finally {
1186
+ n && dr.delete(e);
911
1187
  }
912
- return qn(e, (e) => X(e, t));
913
- }, Xn = /* @__PURE__ */ t({
914
- init: () => Qn,
915
- startBidirectionalConnection: () => Z,
916
- type: () => Zn
917
- }), Zn = "bidirectional", Z = ({ transport: e, value: t, remoteUuid: n, eventTarget: r, send: i, revivableModules: a }) => {
1188
+ }, pr = /* @__PURE__ */ t({
1189
+ init: () => hr,
1190
+ startBidirectionalConnection: () => Q,
1191
+ type: () => mr
1192
+ }), mr = "bidirectional", Q = ({ transport: e, value: t, remoteUuid: n, eventTarget: r, send: i, revivableModules: a }) => {
918
1193
  let o = {
919
1194
  transport: e,
920
1195
  remoteUuid: n,
@@ -929,13 +1204,13 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
929
1204
  }), i({
930
1205
  type: "init",
931
1206
  remoteUuid: n,
932
- data: Y(t, o)
1207
+ data: X(t, o)
933
1208
  }), {
934
1209
  revivableContext: o,
935
- remoteValue: s.then((e) => X(e, o))
1210
+ remoteValue: s.then((e) => Z(e, o))
936
1211
  };
937
- }, Qn = (e) => {
938
- if (D(e.transport) && O(e.transport)) {
1212
+ }, hr = (e) => {
1213
+ if (A(e.transport) && j(e.transport)) {
939
1214
  if (e.protocolEventTarget.addEventListener("message", ({ detail: t }) => {
940
1215
  if (t.type === "announce") {
941
1216
  if (!t.remoteUuid) {
@@ -950,138 +1225,132 @@ var ae = (e) => !e || typeof e != "object" || w(e) || !("emit" in e) ? !1 : D(e.
950
1225
  type: "announce",
951
1226
  remoteUuid: t.uuid
952
1227
  });
953
- let n = e.createConnectionEventTarget(), r = {
954
- type: "bidirectional",
955
- eventTarget: n,
956
- connection: Z({
1228
+ let n = e.createConnectionEventTarget(), r;
1229
+ try {
1230
+ r = Q({
957
1231
  transport: e.transport,
958
1232
  value: e.value,
959
1233
  remoteUuid: t.uuid,
960
1234
  eventTarget: n,
961
1235
  send: (t) => e.sendMessage(t),
962
1236
  revivableModules: e.revivableModules
963
- })
1237
+ });
1238
+ } catch (t) {
1239
+ e.rejectRemoteValue(t);
1240
+ return;
1241
+ }
1242
+ let i = {
1243
+ type: "bidirectional",
1244
+ eventTarget: n,
1245
+ connection: r
964
1246
  };
965
- e.connectionContexts.set(t.uuid, r), r.connection.remoteValue.then((t) => e.resolveRemoteValue(t));
1247
+ e.connectionContexts.set(t.uuid, i), i.connection.remoteValue.then((t) => e.resolveRemoteValue(t), (t) => e.rejectRemoteValue(t));
966
1248
  return;
967
1249
  }
968
1250
  if (t.type === "close") {
969
1251
  if (t.remoteUuid !== e.getUuid()) return;
970
- e.connectionContexts.delete(t.uuid);
1252
+ let n = e.connectionContexts.get(t.uuid);
1253
+ if (!n) return;
1254
+ e.connectionContexts.delete(t.uuid), Ue(n.connection.revivableContext), e.rejectRemoteValue(/* @__PURE__ */ Error("osra: peer closed the connection"));
971
1255
  return;
972
1256
  }
973
1257
  if (t.remoteUuid !== e.getUuid()) return;
974
1258
  let n = e.connectionContexts.get(t.uuid);
975
1259
  n && n.eventTarget.dispatchEvent(new CustomEvent("message", { detail: t }));
976
1260
  }), e.presetRemoteUuid !== void 0) {
977
- let t = e.createConnectionEventTarget(), n = {
978
- type: "bidirectional",
979
- eventTarget: t,
980
- connection: Z({
1261
+ let t = e.createConnectionEventTarget(), n;
1262
+ try {
1263
+ n = Q({
981
1264
  transport: e.transport,
982
1265
  value: e.value,
983
1266
  remoteUuid: e.presetRemoteUuid,
984
1267
  eventTarget: t,
985
1268
  send: (t) => e.sendMessage(t),
986
1269
  revivableModules: e.revivableModules
987
- })
1270
+ });
1271
+ } catch (t) {
1272
+ e.rejectRemoteValue(t);
1273
+ return;
1274
+ }
1275
+ let r = {
1276
+ type: "bidirectional",
1277
+ eventTarget: t,
1278
+ connection: n
988
1279
  };
989
- e.connectionContexts.set(e.presetRemoteUuid, n), n.connection.remoteValue.then((t) => e.resolveRemoteValue(t));
1280
+ e.connectionContexts.set(e.presetRemoteUuid, r), r.connection.remoteValue.then((t) => e.resolveRemoteValue(t), (t) => e.rejectRemoteValue(t));
990
1281
  return;
991
1282
  }
992
1283
  e.sendMessage({ type: "announce" });
993
1284
  }
994
- }, $n = () => new EventTarget(), er = (e) => v(e, [
995
- globalThis.MessagePort,
996
- globalThis.ReadableStream,
997
- globalThis.WritableStream,
998
- globalThis.TransformStream,
999
- globalThis.OffscreenCanvas,
1000
- globalThis.MediaSourceHandle,
1001
- globalThis.MediaStreamTrack,
1002
- globalThis.MIDIAccess,
1003
- globalThis.RTCDataChannel,
1004
- globalThis.WebTransportReceiveStream,
1005
- globalThis.WebTransportSendStream
1006
- ]), tr = (e) => P(e) && e.type === "transfer", Q = (e) => {
1007
- let t = [], n = /* @__PURE__ */ new WeakSet(), r = (e, i) => {
1008
- if (!(!e || typeof e != "object") && !n.has(e) && (n.add(e), !y(e))) {
1009
- if (tr(e)) {
1010
- r(e.inner, i || !e.degraded);
1011
- return;
1012
- }
1013
- if (er(e)) {
1014
- t.push(e);
1015
- return;
1016
- }
1017
- if (ee(e)) {
1018
- i && t.push(e);
1019
- return;
1020
- }
1021
- if (!ArrayBuffer.isView(e)) {
1022
- if (Array.isArray(e)) {
1023
- for (let t of e) r(t, i);
1024
- return;
1025
- }
1026
- for (let t of Object.values(e)) r(t, i);
1027
- }
1028
- }
1285
+ }, gr = () => new EventTarget(), $ = (e) => {
1286
+ let t = M(e), n = t ? e.emit : e, r = t ? e.receive : e;
1287
+ return {
1288
+ isJson: t && "isJson" in e && e.isJson !== void 0 ? e.isJson : n !== void 0 && k(n) || r !== void 0 && k(r),
1289
+ ...n === void 0 ? {} : { emit: n },
1290
+ ...r === void 0 ? {} : { receive: r }
1029
1291
  };
1030
- return r(e, !1), t;
1031
- }, $ = (e) => ({
1032
- isJson: "isJson" in e && e.isJson !== void 0 ? e.isJson : E(e),
1033
- ...A(e) ? e : {
1034
- emit: e,
1035
- receive: e
1036
- }
1037
- }), nr = (e) => e ? e(Un) : Un, rr = (e, t, { key: n = r, origin: i = "*", originA: a = i, originB: o = i, nameA: s, nameB: c, unregisterSignal: l } = {}) => {
1038
- let u = $(e), d = $(t), f = (e, t, r, i) => {
1039
- !O(e) || !D(t) || M({
1292
+ }, _r = (e) => e ? e(ar) : ar, vr = (e, t, { key: n = r, origin: i = "*", originA: a = i, originB: o = i, nameA: s, nameB: c, unregisterSignal: d } = {}) => {
1293
+ let f = $(e), p = $(t), m = (e, t, r, i, a) => {
1294
+ !j(e) || !A(t) || l({
1040
1295
  transport: e,
1041
1296
  key: n,
1042
- remoteName: i,
1043
- unregisterSignal: l,
1297
+ remoteName: a,
1298
+ origin: r,
1299
+ unregisterSignal: d,
1044
1300
  listener: (e) => {
1045
- ue(t, e, r, Q(e));
1301
+ u(t, e, i, L(e));
1046
1302
  }
1047
1303
  });
1048
1304
  };
1049
- f(u, d, o, s), f(d, u, a, c);
1050
- }, ir = [Xn], ar = (e, { transport: t, name: i, remoteName: a, key: o = r, origin: s = "*", unregisterSignal: c, revivableModules: l, uuid: u, remoteUuid: d }) => {
1051
- let f = $(t), p = nr(l), m = /* @__PURE__ */ new Map(), { promise: h, resolve: g } = Promise.withResolvers(), _ = u ?? globalThis.crypto.randomUUID(), v = (e) => {
1052
- if (c?.aborted || !D(f)) return;
1305
+ m(f, p, a, o, s), m(p, f, o, a, c);
1306
+ }, yr = [pr], br = (e, { transport: t, name: i, remoteName: a, key: o = r, origin: s = "*", unregisterSignal: c, revivableModules: d, uuid: f, remoteUuid: p }) => {
1307
+ let m = $(t);
1308
+ if (!(A(m) && j(m))) throw Error("osra: transport must be able to both emit and receive to establish a connection — pass a bidirectional platform transport or a custom { emit, receive } pair");
1309
+ let h = _r(d), g = /* @__PURE__ */ new Map(), { promise: _, resolve: ee, reject: v } = Promise.withResolvers();
1310
+ _.catch(() => {});
1311
+ let y = f ?? globalThis.crypto.randomUUID(), b = (e) => {
1053
1312
  let t = {
1054
1313
  [n]: o,
1055
1314
  name: i,
1056
- uuid: _,
1315
+ uuid: y,
1057
1316
  ...e
1058
1317
  };
1059
- ue(f, t, s, Q(t));
1060
- }, y = $n(), ee = {
1061
- transport: f,
1318
+ u(m, t, s, L(t));
1319
+ }, x = (e) => {
1320
+ c?.aborted || b(e);
1321
+ }, S = gr(), te = {
1322
+ transport: m,
1062
1323
  value: e,
1063
- revivableModules: p,
1064
- connectionContexts: m,
1065
- getUuid: () => _,
1066
- presetRemoteUuid: d,
1067
- sendMessage: v,
1068
- protocolEventTarget: y,
1069
- resolveRemoteValue: g,
1070
- createConnectionEventTarget: $n
1324
+ revivableModules: h,
1325
+ connectionContexts: g,
1326
+ getUuid: () => y,
1327
+ presetRemoteUuid: p,
1328
+ sendMessage: x,
1329
+ protocolEventTarget: S,
1330
+ resolveRemoteValue: ee,
1331
+ rejectRemoteValue: v,
1332
+ createConnectionEventTarget: gr
1071
1333
  };
1072
- O(f) && M({
1334
+ l({
1073
1335
  listener: (e, t) => {
1074
- e.uuid !== _ && y.dispatchEvent(new CustomEvent("message", { detail: e }));
1336
+ e.uuid !== y && S.dispatchEvent(new CustomEvent("message", { detail: e }));
1075
1337
  },
1076
- transport: f,
1338
+ transport: m,
1077
1339
  remoteName: a,
1078
1340
  key: o,
1341
+ origin: s,
1079
1342
  unregisterSignal: c
1080
- });
1081
- for (let e of ir) e.init(ee);
1082
- return h;
1083
- }, or = async (e, t) => ar(e, t);
1343
+ }), c?.addEventListener("abort", () => {
1344
+ for (let [e, t] of g) b({
1345
+ type: "close",
1346
+ remoteUuid: e
1347
+ }), Ue(t.connection.revivableContext);
1348
+ g.clear(), v(c.reason);
1349
+ }, { once: !0 });
1350
+ for (let e of yr) e.init(te);
1351
+ return _;
1352
+ }, xr = async (e, t) => br(e, t);
1084
1353
  //#endregion
1085
- export { N as BoxBase, R as EventChannel, L as EventPort, i as OSRA_BOX, r as OSRA_DEFAULT_KEY, n as OSRA_KEY, re as assertEmitTransport, ie as assertReceiveTransport, Jn as box, F as boxBuffer, j as checkOsraMessageKey, ir as connections, $n as createTypedEventTarget, Un as defaultRevivableModules, or as expose, Q as getTransferableObjects, se as getWebExtensionGlobal, ce as getWebExtensionRuntime, J as identity, Qn as init, v as instanceOfAny, y as isClonable, ae as isCustomEmitTransport, k as isCustomReceiveTransport, A as isCustomTransport, m as isDedicatedWorker, T as isEmitJsonOnlyTransport, D as isEmitTransport, E as isJsonOnlyTransport, _ as isOsraMessage, ne as isReceiveJsonOnlyTransport, O as isReceiveTransport, P as isRevivableBox, f as isServiceWorkerContainer, h as isSharedWorker, ee as isTransferable, oe as isTransport, u as isTypedArray, S as isWebExtensionOnConnect, C as isWebExtensionOnMessage, x as isWebExtensionPort, b as isWebExtensionRuntime, d as isWebSocket, w as isWindow, p as isWorker, nr as mergeRevivableModules, $ as normalizeTransport, Y as recursiveBox, X as recursiveRevive, M as registerOsraMessageListener, rr as relay, Yn as revive, I as reviveBuffer, ue as sendOsraMessage, Z as startBidirectionalConnection, ar as startConnections, z as trackGc, Jt as transfer, Zn as type, c as typedArrayToType, l as typedArrayTypeToTypedArrayConstructor };
1354
+ export { N as BoxBase, z as EventChannel, R as EventPort, i as OSRA_BOX, r as OSRA_DEFAULT_KEY, n as OSRA_KEY, ce as assertEmitTransport, le as assertReceiveTransport, me as boxBuffer, s as checkOsraMessageKey, yr as connections, gr as createTypedEventTarget, ar as defaultRevivableModules, xr as expose, L as getTransferableObjects, a as getWebExtensionGlobal, o as getWebExtensionRuntime, Y as identity, hr as init, C as instanceOfAny, re as isClonable, de as isCustomEmitTransport, fe as isCustomReceiveTransport, M as isCustomTransport, b as isDedicatedWorker, oe as isEmitJsonOnlyTransport, A as isEmitTransport, k as isJsonOnlyTransport, te as isOsraMessage, se as isReceiveJsonOnlyTransport, j as isReceiveTransport, P as isRevivableBox, v as isServiceWorker, ee as isServiceWorkerContainer, ne as isSharedArrayBuffer, x as isSharedWorker, ie as isTransferable, pe as isTransport, g as isTypedArray, E as isWebExtensionOnConnect, D as isWebExtensionOnMessage, T as isWebExtensionPort, w as isWebExtensionRuntime, _ as isWebSocket, O as isWindow, y as isWorker, _r as mergeRevivableModules, $ as normalizeTransport, I as onTeardown, X as recursiveBox, Z as recursiveRevive, l as registerOsraMessageListener, vr as relay, he as reviveBuffer, Ue as runTeardown, u as sendOsraMessage, Q as startBidirectionalConnection, br as startConnections, B as trackGc, Xe as transfer, mr as type, m as typedArrayToType, h as typedArrayTypeToTypedArrayConstructor };
1086
1355
 
1087
1356
  //# sourceMappingURL=index.js.map