@fkn/lib 0.9.67 → 0.9.69

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 (115) hide show
  1. package/{account-Uh0-1Cbp.js → account-CAX5oCUD.js} +2 -2
  2. package/{account-DBagcNfd.d.ts → account-CXUwroRM.d.ts} +1 -1
  3. package/{account-m2iCmNui.cjs → account-aaD_dWUH.cjs} +1 -1
  4. package/{account-generation-BKHNe-jL.js → account-generation-BElgcQwo.js} +1 -1
  5. package/{account-generation-ACCBzaI-.cjs → account-generation-DwMcJFGc.cjs} +1 -1
  6. package/{account-storage-BmCVutNL.js → account-storage-C7Lyae5Q.js} +2 -2
  7. package/{account-storage-dYWDpqsr.cjs → account-storage-gOL0HE6i.cjs} +1 -1
  8. package/account.cjs +1 -1
  9. package/account.d.ts +2 -2
  10. package/account.js +1 -1
  11. package/api-BkoXMcoe.cjs +3 -0
  12. package/{api-DRglK7ft.js → api-DeGR_tzF.js} +62 -60
  13. package/{api-BlYVLNjo.d.ts → api-DhwJz0vo.d.ts} +35 -1
  14. package/api.cjs +1 -1
  15. package/api.d.ts +2 -2
  16. package/api.js +1 -1
  17. package/{broker-frame-vjSpBa8d.js → broker-frame-BClLp2ZV.js} +3 -1
  18. package/broker-frame-BKHtDSjv.cjs +11 -0
  19. package/broker-frame.cjs +1 -1
  20. package/broker-frame.d.ts +2 -1
  21. package/broker-frame.js +1 -1
  22. package/cloud/dgram.cjs +1 -1
  23. package/cloud/dgram.d.ts +1 -1
  24. package/cloud/dgram.js +1 -1
  25. package/cloud/dns.cjs +1 -1
  26. package/cloud/dns.d.ts +2 -2
  27. package/cloud/dns.js +1 -1
  28. package/cloud/fetch.cjs +1 -1
  29. package/cloud/fetch.d.ts +1 -1
  30. package/cloud/fetch.js +1 -1
  31. package/cloud/fs/promises.cjs +1 -1
  32. package/cloud/fs/promises.js +1 -1
  33. package/cloud/fs.cjs +1 -1
  34. package/cloud/fs.js +2 -2
  35. package/cloud/http.cjs +1 -1
  36. package/cloud/http.d.ts +1 -1
  37. package/cloud/http.js +1 -1
  38. package/cloud/net.cjs +1 -1
  39. package/cloud/net.d.ts +1 -1
  40. package/cloud/net.js +1 -1
  41. package/{cloud-CoHrHk6t.js → cloud-B3LylTk3.js} +9 -9
  42. package/{cloud-r8DsgB1W.cjs → cloud-BvRWgECW.cjs} +1 -1
  43. package/{cloud-BCRo1U9I.d.ts → cloud-P8d7GYmM.d.ts} +5 -5
  44. package/cloud.cjs +1 -1
  45. package/cloud.d.ts +6 -6
  46. package/cloud.js +7 -7
  47. package/{contract-CJk3vE9P.d.ts → contract-CDdIE_Es.d.ts} +49 -2
  48. package/contract.d.ts +1 -1
  49. package/{dgram-BBbLokVF.js → dgram-BMCYdn0Q.js} +1 -1
  50. package/{dgram-DSgktX7M.d.ts → dgram-CPQqam5Z.d.ts} +3 -3
  51. package/{dgram-D9ljiUFh.cjs → dgram-Xrt2rPrC.cjs} +1 -1
  52. package/dgram.cjs +1 -1
  53. package/dgram.d.ts +1 -1
  54. package/dgram.js +1 -1
  55. package/{dns-o8DLFjP1.js → dns-CxfA8mGU.js} +1 -1
  56. package/{dns-BwS2LM9b.d.ts → dns-_NCe2YLS.d.ts} +1 -1
  57. package/{dns-2v96zoEh.cjs → dns-ijWQw2NO.cjs} +1 -1
  58. package/dns.cjs +1 -1
  59. package/dns.d.ts +2 -2
  60. package/dns.js +1 -1
  61. package/{extension-Dn64NfoU.cjs → extension-gWkpzDKG.cjs} +1 -1
  62. package/{extension-CG7Qi3I0.js → extension-nTQBWRg6.js} +4 -4
  63. package/extension.cjs +1 -1
  64. package/extension.js +2 -2
  65. package/fs/promises.cjs +1 -1
  66. package/fs/promises.js +1 -1
  67. package/{fs-BX_ghRy0.cjs → fs-BVISC6T6.cjs} +1 -1
  68. package/{fs--MLHvMW-.cjs → fs-Cu7wH1Fo.cjs} +1 -1
  69. package/{fs-BnWXGRik.js → fs-D16P3dtE.js} +1 -1
  70. package/{fs-Cw7CcUhx.js → fs-DsHrUu0O.js} +3 -3
  71. package/fs.cjs +1 -1
  72. package/fs.js +2 -2
  73. package/{http-DIDjdm08.js → http-1ruN3pj9.js} +1 -1
  74. package/{http-BE3UBktN.cjs → http-CzMigExo.cjs} +1 -1
  75. package/{http-D8ulR5RD.d.ts → http-D3wvnIVo.d.ts} +1 -1
  76. package/http.cjs +1 -1
  77. package/http.d.ts +1 -1
  78. package/http.js +1 -1
  79. package/index.cjs +1 -1
  80. package/index.d.ts +11 -11
  81. package/index.js +13 -13
  82. package/{lib-D2uKjgLV.js → lib-6lykV0aT.js} +1 -1
  83. package/{lib-_WDKIXcj.cjs → lib-C1OPIW6F.cjs} +1 -1
  84. package/{net-COkJw8lV.js → net-Bj1vCk29.js} +1 -1
  85. package/{net-Dk2kqtgE.cjs → net-b250sYEx.cjs} +1 -1
  86. package/{net-BCEAHCZe.d.ts → net-v_6ythjK.d.ts} +3 -3
  87. package/net.cjs +1 -1
  88. package/net.d.ts +1 -1
  89. package/net.js +1 -1
  90. package/package.json +1 -1
  91. package/{packages-Cws_rcgf.js → packages-BqY5yoIM.js} +73 -70
  92. package/packages-Cb8FXQu1.cjs +1 -0
  93. package/{packages-BlJK4kSJ.d.ts → packages-SwO4CxMl.d.ts} +19 -6
  94. package/packages.cjs +1 -1
  95. package/packages.d.ts +3 -3
  96. package/packages.js +1 -1
  97. package/{proxy-DVgGp6A8.cjs → proxy-BFa0n5gx.cjs} +1 -1
  98. package/{proxy-CfgavvzR.d.ts → proxy-CzP07me0.d.ts} +2 -2
  99. package/{proxy-BBAQxJmP.js → proxy-FSgMUaD3.js} +2 -2
  100. package/{relay-choice-D5Jeevab.d.ts → relay-choice-DB1F7bcn.d.ts} +1 -1
  101. package/{rooms-0vp7HaAY.d.ts → rooms-3XplwXzb.d.ts} +1 -1
  102. package/{rooms-DHFS9cwA.cjs → rooms-CYP6g-p9.cjs} +1 -1
  103. package/{rooms-DP5stTEr.js → rooms-GZ798oSd.js} +1 -1
  104. package/rooms.cjs +1 -1
  105. package/rooms.d.ts +2 -2
  106. package/rooms.js +1 -1
  107. package/{storage-CidJUc0x.d.ts → storage-C38adB-z.d.ts} +1 -1
  108. package/{storage-BCjYihUO.cjs → storage-CoEDsbk2.cjs} +1 -1
  109. package/{storage-BhfImh_2.js → storage-sCdMPRVY.js} +3 -3
  110. package/storage.cjs +1 -1
  111. package/storage.d.ts +2 -2
  112. package/storage.js +1 -1
  113. package/api-DrvhPN56.cjs +0 -3
  114. package/broker-frame-CF4-yXtj.cjs +0 -9
  115. package/packages-DT8vPB5_.cjs +0 -1
@@ -1,22 +1,23 @@
1
1
  import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { c as t, l as n, o as r, u as i } from "./api-DRglK7ft.js";
2
+ import { c as t, l as n, o as r, u as i } from "./api-DeGR_tzF.js";
3
3
  import { i as a, t as o } from "./busy-C1JPjoZ_.js";
4
4
  import { expose as s } from "osra";
5
5
  // src/packages.ts
6
6
  var c = /* @__PURE__ */ e({
7
- attach: () => I,
8
- connect: () => A,
9
- hide: () => k,
7
+ attach: () => L,
8
+ connect: () => j,
9
+ hide: () => A,
10
10
  install: () => v,
11
- isVisible: () => X,
12
- list: () => y,
13
- mount: () => F,
14
- onConnect: () => Y,
15
- onVisibilityChange: () => Z,
11
+ isVisible: () => Z,
12
+ list: () => b,
13
+ mount: () => I,
14
+ onConnect: () => X,
15
+ onVisibilityChange: () => Q,
16
16
  pick: () => _,
17
17
  search: () => g,
18
- show: () => O,
19
- uninstall: () => b
18
+ show: () => k,
19
+ supportsTemporary: () => y,
20
+ uninstall: () => x
20
21
  }), l = "fkn-packages-connection", u = "https://fkn.app", d = 3e4, f = (e, t) => Object.assign(Error(t), { code: e }), p = async () => {
21
22
  if (!n) throw f("unavailable", "packages: no FKN transport in this realm - use relayWorker to bridge workers");
22
23
  return r;
@@ -61,18 +62,20 @@ var c = /* @__PURE__ */ e({
61
62
  if ("error" in n) throw f(n.error, n.message);
62
63
  return "declined" in n ? [] : n.results;
63
64
  }, v = async (e, t) => {
64
- let n = await (await p()).packages.install(e, t);
65
- if ("error" in n) throw f(n.error, n.message);
66
- return "declined" in n ? null : n.installed;
67
- }, y = async () => (await (await p()).packages.list()).results, b = async (e) => {
65
+ let { packages: n } = await p(), r = t?.temporary ? n.installTemporary : n.install;
66
+ if (!r) throw f("unsupported", "packages.install: this fkn.app cannot install a package temporarily");
67
+ let i = await r(e, t);
68
+ if ("error" in i) throw f(i.error, i.message);
69
+ return "declined" in i ? null : i.installed;
70
+ }, y = async () => typeof (await p()).packages.installTemporary == "function", b = async () => (await (await p()).packages.list()).results, x = async (e) => {
68
71
  let t = await (await p()).packages.uninstall(e);
69
72
  if ("error" in t) throw f(t.error, t.message);
70
- }, x = ({ x: e, y: t, width: n, height: r }) => ({
73
+ }, S = ({ x: e, y: t, width: n, height: r }) => ({
71
74
  x: Math.round(e),
72
75
  y: Math.round(t),
73
76
  width: Math.round(n),
74
77
  height: Math.round(r)
75
- }), S = (e, t) => {
78
+ }), C = (e, t) => {
76
79
  let n = Math.max(e.x, t.x), r = Math.max(e.y, t.y);
77
80
  return {
78
81
  x: n,
@@ -80,14 +83,14 @@ var c = /* @__PURE__ */ e({
80
83
  width: Math.max(0, Math.min(e.x + e.width, t.x + t.width) - n),
81
84
  height: Math.max(0, Math.min(e.y + e.height, t.y + t.height) - r)
82
85
  };
83
- }, C = (e, t) => {
86
+ }, w = (e, t) => {
84
87
  let n = t;
85
88
  for (let t = e.parentElement; t; t = t.parentElement) {
86
89
  let e = getComputedStyle(t);
87
- if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n = S(n, x(t.getBoundingClientRect())), n.width === 0 || n.height === 0)) break;
90
+ if ((e.overflowX !== "visible" || e.overflowY !== "visible") && (n = C(n, S(t.getBoundingClientRect())), n.width === 0 || n.height === 0)) break;
88
91
  }
89
92
  return n;
90
- }, w = (e) => {
93
+ }, T = (e) => {
91
94
  let t = getComputedStyle(e), n = [
92
95
  t.borderTopLeftRadius,
93
96
  t.borderTopRightRadius,
@@ -100,31 +103,31 @@ var c = /* @__PURE__ */ e({
100
103
  return Number.isFinite(t) && t > 0 ? t : 0;
101
104
  });
102
105
  return r.some((e) => e > 0) ? r : void 0;
103
- }, T = (e, t) => {
106
+ }, E = (e, t) => {
104
107
  if (!e) return !1;
105
108
  let n = (e, t) => e === t || !!e && !!t && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
106
109
  return n(e.rect, t.rect) && n(e.clip, t.clip) && ((e, t) => e === t || !!e && !!t && e.every((e, n) => e === t[n]))(e.radius, t.radius);
107
- }, E = /* @__PURE__ */ new Map();
108
- a("package view", () => E.size > 0);
109
- var D = async (e, t) => {
110
- let n = E.get(e);
110
+ }, D = /* @__PURE__ */ new Map();
111
+ a("package view", () => D.size > 0);
112
+ var O = async (e, t) => {
113
+ let n = D.get(e);
111
114
  if (n) {
112
115
  for (let e of n) t && e.element !== t || (e.stop(), n.delete(e));
113
116
  if (n.size > 0) return;
114
- E.delete(e);
117
+ D.delete(e);
115
118
  }
116
119
  let r = await (await p()).packages.hide(e);
117
120
  if ("error" in r) throw f(r.error, r.message);
118
- }, O = async (e, t) => {
121
+ }, k = async (e, t) => {
119
122
  let { element: n, rect: r } = t;
120
123
  if (!n && !r) throw f("invalid", "packages.show: pass an element or a rect");
121
124
  let i = (await p()).packages, a = () => {
122
- if (!n) return { rect: x(r) };
123
- let e = x(n.getBoundingClientRect());
125
+ if (!n) return { rect: S(r) };
126
+ let e = S(n.getBoundingClientRect());
124
127
  return {
125
128
  rect: e,
126
- clip: C(n, e),
127
- radius: w(n)
129
+ clip: w(n, e),
130
+ radius: T(n)
128
131
  };
129
132
  }, o = !0, s, c = 0, l = async (t) => {
130
133
  s = t;
@@ -135,7 +138,7 @@ var D = async (e, t) => {
135
138
  let u = () => {
136
139
  if (!o) return;
137
140
  let e = a();
138
- T(s, e) || l(e).catch(() => {}), c = requestAnimationFrame(u);
141
+ E(s, e) || l(e).catch(() => {}), c = requestAnimationFrame(u);
139
142
  };
140
143
  n && (c = requestAnimationFrame(u));
141
144
  let d = {
@@ -143,18 +146,18 @@ var D = async (e, t) => {
143
146
  stop: () => {
144
147
  o = !1, cancelAnimationFrame(c);
145
148
  }
146
- }, m = E.get(e) ?? /* @__PURE__ */ new Set();
147
- return m.add(d), E.set(e, m), {
149
+ }, m = D.get(e) ?? /* @__PURE__ */ new Set();
150
+ return m.add(d), D.set(e, m), {
148
151
  hide: () => {
149
- D(e, n).catch(() => {});
152
+ O(e, n).catch(() => {});
150
153
  },
151
154
  refresh: () => {
152
155
  if (!o) return;
153
156
  let e = a();
154
- T(s, e) || l(e).catch(() => {});
157
+ E(s, e) || l(e).catch(() => {});
155
158
  }
156
159
  };
157
- }, k = async (e, t = {}) => D(e, t.element), A = (async (e, n = {}) => {
160
+ }, A = async (e, t = {}) => O(e, t.element), j = (async (e, n = {}) => {
158
161
  let r = await (await p()).packages.connect(e, {
159
162
  protocol: n.protocol,
160
163
  ...n.path === void 0 ? {} : { path: n.path }
@@ -186,14 +189,14 @@ var D = async (e, t) => {
186
189
  closed: u,
187
190
  port: l
188
191
  };
189
- }), j = ["allow-scripts", "allow-same-origin"], M = (e) => {
192
+ }), M = ["allow-scripts", "allow-same-origin"], N = (e) => {
190
193
  let t = e.getAttribute("sandbox");
191
194
  if (t !== null) {
192
- let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n = j.filter((t) => !e.has(t));
195
+ let e = new Set(t.toLowerCase().split(/\s+/).filter(Boolean)), n = M.filter((t) => !e.has(t));
193
196
  if (n.length) throw f("invalid", `packages.mount: the iframe's sandbox attribute must include ${n.join(" and ")}, or the package cannot start`);
194
197
  }
195
198
  if (globalThis.crossOriginIsolated && !new Set((e.getAttribute("allow") ?? "").toLowerCase().split(";").map((e) => e.trim().split(/\s+/)[0]).filter(Boolean)).has("cross-origin-isolated")) throw f("invalid", "packages.mount: this page is cross-origin isolated, so the iframe's allow attribute must include 'cross-origin-isolated' to hand that down to the package");
196
- }, N = 3e4, P = (e, t) => new Promise((n, r) => {
199
+ }, P = 3e4, F = (e, t) => new Promise((n, r) => {
197
200
  let i = (e) => {
198
201
  clearTimeout(o), window.removeEventListener("message", a), e ? r(e) : n();
199
202
  }, a = (n) => {
@@ -201,13 +204,13 @@ var D = async (e, t) => {
201
204
  let r = n.data;
202
205
  if (r?.type === "fkn-packages-ready") return i();
203
206
  r?.type === "fkn-packages-failed" && i(f("unavailable", typeof r.message == "string" && r.message ? r.message : "packages.mount: the package failed to boot"));
204
- }, o = setTimeout(() => i(f("timeout", "packages.mount: the package did not register a connection handler")), N);
207
+ }, o = setTimeout(() => i(f("timeout", "packages.mount: the package did not register a connection handler")), P);
205
208
  window.addEventListener("message", a);
206
- }), F = async (e, t) => {
209
+ }), I = async (e, t) => {
207
210
  let { iframe: n } = t;
208
211
  if (!(n instanceof HTMLIFrameElement)) throw f("invalid", "packages.mount: pass the iframe to load the package into");
209
212
  if (!n.isConnected) throw f("invalid", "packages.mount: the iframe must be in the document before mounting into it");
210
- M(n);
213
+ N(n);
211
214
  let r = await (await p()).packages.frame(e);
212
215
  if ("error" in r) throw f(r.error, r.message);
213
216
  n.src = r.url;
@@ -223,7 +226,7 @@ var D = async (e, t) => {
223
226
  }
224
227
  };
225
228
  try {
226
- await P(n, r.origin);
229
+ await F(n, r.origin);
227
230
  } catch (e) {
228
231
  throw l(), e;
229
232
  }
@@ -263,10 +266,10 @@ var D = async (e, t) => {
263
266
  } catch (e) {
264
267
  throw l(), e;
265
268
  }
266
- }, I = (e, t, n) => h(t, e, { signal: n?.signal }), L = null, R = !1, z = /* @__PURE__ */ new Set(), B = [], V = /* @__PURE__ */ new Map(), H = !1, U = !1, W = (e) => {
267
- let t = V.get(e);
268
- t && (V.delete(e), t());
269
- }, G = (e, t) => {
269
+ }, L = (e, t, n) => h(t, e, { signal: n?.signal }), R = null, z = !1, B = /* @__PURE__ */ new Set(), V = [], H = /* @__PURE__ */ new Map(), U = !1, W = !1, G = (e) => {
270
+ let t = H.get(e);
271
+ t && (H.delete(e), t());
272
+ }, K = (e, t) => {
270
273
  try {
271
274
  e.postMessage({
272
275
  type: "fkn-packages-nack",
@@ -276,26 +279,26 @@ var D = async (e, t) => {
276
279
  try {
277
280
  e.close();
278
281
  } catch {}
279
- }, K = async (e, t) => {
282
+ }, q = async (e, t) => {
280
283
  let { port: n, ...r } = e;
281
284
  e.port.addEventListener("message", (t) => {
282
- t.data?.type === "fkn-packages-disconnect" && W(e.port);
285
+ t.data?.type === "fkn-packages-disconnect" && G(e.port);
283
286
  });
284
287
  let i;
285
288
  try {
286
289
  i = await t.createPayload(r);
287
290
  } catch (t) {
288
- throw G(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
291
+ throw K(e.port, t instanceof Error ? t.message : "the package failed to produce a connection"), t;
289
292
  }
290
- let a = new Promise((t) => V.set(e.port, t)), o = await m(i, e.port);
293
+ let a = new Promise((t) => H.set(e.port, t)), o = await m(i, e.port);
291
294
  t.handler?.({
292
295
  ...r,
293
296
  remote: o,
294
297
  closed: a,
295
298
  port: e.port
296
299
  });
297
- }, q = () => {
298
- H || typeof window > "u" || window.parent === window || (H = !0, window.addEventListener("message", (e) => {
300
+ }, J = () => {
301
+ U || typeof window > "u" || window.parent === window || (U = !0, window.addEventListener("message", (e) => {
299
302
  if (e.source !== window.parent) return;
300
303
  let t = e.data;
301
304
  if (t?.type === "fkn-packages-port") {
@@ -310,37 +313,37 @@ var D = async (e, t) => {
310
313
  name: typeof t.name == "string" ? t.name : "",
311
314
  version: typeof t.version == "string" ? t.version : ""
312
315
  };
313
- L ? K(r, L).catch((e) => console.warn("packages.onConnect:", e)) : B.push(r);
316
+ R ? q(r, R).catch((e) => console.warn("packages.onConnect:", e)) : V.push(r);
314
317
  }
315
- if (t?.type === "fkn-packages-close") for (let e of [...V.keys()]) W(e);
318
+ if (t?.type === "fkn-packages-close") for (let e of [...H.keys()]) G(e);
316
319
  if (t?.type === "fkn-packages-visibility") {
317
- R = t.visible === !0;
318
- for (let e of z) try {
319
- e(R);
320
+ z = t.visible === !0;
321
+ for (let e of B) try {
322
+ e(z);
320
323
  } catch {}
321
324
  }
322
325
  }));
323
- }, J = () => {
324
- U || typeof window > "u" || window.parent === window || (U = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, "*"));
325
- }, Y = (e, t) => {
326
+ }, Y = () => {
327
+ W || typeof window > "u" || window.parent === window || (W = !0, window.parent.postMessage({ type: "fkn-packages-ready" }, "*"));
328
+ }, X = (e, t) => {
326
329
  if (typeof window > "u") return { unsubscribe: () => {} };
327
- q();
330
+ J();
328
331
  let n = {
329
332
  createPayload: e,
330
333
  handler: t
331
334
  };
332
- for (L = n, J(); B.length && L === n;) K(B.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
335
+ for (R = n, Y(); V.length && R === n;) q(V.shift(), n).catch((e) => console.warn("packages.onConnect:", e));
333
336
  return { unsubscribe: () => {
334
- L === n && (L = null);
337
+ R === n && (R = null);
335
338
  } };
336
- }, X = () => R, Z = (e) => {
339
+ }, Z = () => z, Q = (e) => {
337
340
  if (typeof window > "u") return { unsubscribe: () => {} };
338
- q(), z.add(e);
341
+ J(), B.add(e);
339
342
  try {
340
- e(R);
343
+ e(z);
341
344
  } catch {}
342
345
  return { unsubscribe: () => {
343
- z.delete(e);
346
+ B.delete(e);
344
347
  } };
345
348
  };
346
- export { X as a, Y as c, _ as d, g as f, v as i, Z as l, b as m, A as n, y as o, O as p, k as r, F as s, I as t, c as u };
349
+ export { Z as a, X as c, _ as d, g as f, x as h, v as i, Q as l, y as m, j as n, b as o, k as p, A as r, I as s, L as t, c as u };
@@ -0,0 +1 @@
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./busy-BXbVH595.cjs");let r=require("osra");var i=e.t({attach:()=>N,connect:()=>D,hide:()=>E,install:()=>m,isVisible:()=>q,list:()=>g,mount:()=>M,onConnect:()=>K,onVisibilityChange:()=>J,pick:()=>p,search:()=>f,show:()=>T,supportsTemporary:()=>h,uninstall:()=>_}),a=`fkn-packages-connection`,o=`https://fkn.app`,s=3e4,c=(e,t)=>Object.assign(Error(t),{code:e}),l=async()=>{if(!t.l)throw c(`unavailable`,`packages: no FKN transport in this realm - use relayWorker to bridge workers`);return t.o},u=(e,t,n)=>(0,r.expose)(e??{},{transport:t,key:a,unregisterSignal:n}),d=async(e,t,n={})=>{let{signal:r,closed:i}=n;if(r?.aborted)throw c(`unavailable`,`packages.connect: aborted before connecting`);let a=new AbortController;r&&r.addEventListener(`abort`,()=>a.abort(r.reason),{once:!0});let o=new AbortController,l=new Promise((e,n)=>{let a=setTimeout(()=>n(c(`timeout`,`packages.connect: the package did not complete the connection`)),s);o.signal.addEventListener(`abort`,()=>clearTimeout(a),{once:!0}),t.addEventListener(`message`,e=>{if(e.data?.type===`fkn-packages-nack`){let t=e.data.message;n(c(`unavailable`,typeof t==`string`&&t?t:`packages.connect: the package refused the connection`))}},{signal:o.signal}),t.start(),r&&r.addEventListener(`abort`,()=>n(c(`unavailable`,`packages.connect: aborted before connecting`)),{once:!0,signal:o.signal}),i?.then(()=>n(c(`unavailable`,`packages.connect: the package closed before connecting`)))});try{return await Promise.race([u(e,t,a.signal),l])}catch(e){a.abort(e);try{t.close()}catch{}throw e}finally{o.abort()}},f=async e=>{let t=await(await l()).packages.search(e);if(`error`in t)throw c(t.error,t.message);return t.results},p=async(e,t)=>{let n=await(await l()).packages.pick(e,t);if(`error`in n)throw c(n.error,n.message);return`declined`in n?[]:n.results},m=async(e,t)=>{let{packages:n}=await l(),r=t?.temporary?n.installTemporary:n.install;if(!r)throw c(`unsupported`,`packages.install: this fkn.app cannot install a package temporarily`);let i=await r(e,t);if(`error`in i)throw c(i.error,i.message);return`declined`in i?null:i.installed},h=async()=>typeof(await l()).packages.installTemporary==`function`,g=async()=>(await(await l()).packages.list()).results,_=async e=>{let t=await(await l()).packages.uninstall(e);if(`error`in t)throw c(t.error,t.message)},v=({x:e,y:t,width:n,height:r})=>({x:Math.round(e),y:Math.round(t),width:Math.round(n),height:Math.round(r)}),y=(e,t)=>{let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,width:Math.max(0,Math.min(e.x+e.width,t.x+t.width)-n),height:Math.max(0,Math.min(e.y+e.height,t.y+t.height)-r)}},b=(e,t)=>{let n=t;for(let t=e.parentElement;t;t=t.parentElement){let e=getComputedStyle(t);if((e.overflowX!==`visible`||e.overflowY!==`visible`)&&(n=y(n,v(t.getBoundingClientRect())),n.width===0||n.height===0))break}return n},x=e=>{let t=getComputedStyle(e),n=[t.borderTopLeftRadius,t.borderTopRightRadius,t.borderBottomRightRadius,t.borderBottomLeftRadius];if(n.some(e=>e.includes(`%`)||e.includes(` `)))return;let r=n.map(e=>{let t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:0});return r.some(e=>e>0)?r:void 0},S=(e,t)=>{if(!e)return!1;let n=(e,t)=>e===t||!!e&&!!t&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height;return n(e.rect,t.rect)&&n(e.clip,t.clip)&&((e,t)=>e===t||!!e&&!!t&&e.every((e,n)=>e===t[n]))(e.radius,t.radius)},C=new Map;n.i(`package view`,()=>C.size>0);var w=async(e,t)=>{let n=C.get(e);if(n){for(let e of n)t&&e.element!==t||(e.stop(),n.delete(e));if(n.size>0)return;C.delete(e)}let r=await(await l()).packages.hide(e);if(`error`in r)throw c(r.error,r.message)},T=async(e,t)=>{let{element:n,rect:r}=t;if(!n&&!r)throw c(`invalid`,`packages.show: pass an element or a rect`);let i=(await l()).packages,a=()=>{if(!n)return{rect:v(r)};let e=v(n.getBoundingClientRect());return{rect:e,clip:b(n,e),radius:x(n)}},o=!0,s,u=0,d=async t=>{s=t;let n=await i.show(e,t);if(`error`in n)throw o=!1,c(n.error,n.message)};await d(a());let f=()=>{if(!o)return;let e=a();S(s,e)||d(e).catch(()=>{}),u=requestAnimationFrame(f)};n&&(u=requestAnimationFrame(f));let p={element:n,stop:()=>{o=!1,cancelAnimationFrame(u)}},m=C.get(e)??new Set;return m.add(p),C.set(e,m),{hide:()=>{w(e,n).catch(()=>{})},refresh:()=>{if(!o)return;let e=a();S(s,e)||d(e).catch(()=>{})}}},E=async(e,t={})=>w(e,t.element),D=(async(e,r={})=>{let i=await(await l()).packages.connect(e,{protocol:r.protocol,...r.path===void 0?{}:{path:r.path}});if(`error`in i)throw c(i.error,i.message);let a=n.t(`package connection`),o=t.c()?.epoch??0,s=t.u((e,t)=>{t!==o&&(a(),s())});Promise.resolve(i.closed).then(()=>{a(),s()},()=>{a(),s()});let{port:u,closed:f}=i;if(r.raw)return{closed:f,port:u};let p=await d(r.payload,u,{signal:r.signal,closed:f});return r.signal&&r.signal.addEventListener(`abort`,()=>{try{u.postMessage({type:`fkn-packages-disconnect`})}catch{}},{once:!0}),{remote:p,closed:f,port:u}}),O=[`allow-scripts`,`allow-same-origin`],k=e=>{let t=e.getAttribute(`sandbox`);if(t!==null){let e=new Set(t.toLowerCase().split(/\s+/).filter(Boolean)),n=O.filter(t=>!e.has(t));if(n.length)throw c(`invalid`,`packages.mount: the iframe's sandbox attribute must include ${n.join(` and `)}, or the package cannot start`)}if(globalThis.crossOriginIsolated&&!new Set((e.getAttribute(`allow`)??``).toLowerCase().split(`;`).map(e=>e.trim().split(/\s+/)[0]).filter(Boolean)).has(`cross-origin-isolated`))throw c(`invalid`,`packages.mount: this page is cross-origin isolated, so the iframe's allow attribute must include 'cross-origin-isolated' to hand that down to the package`)},A=3e4,j=(e,t)=>new Promise((n,r)=>{let i=e=>{clearTimeout(o),window.removeEventListener(`message`,a),e?r(e):n()},a=n=>{if(n.source!==e.contentWindow||n.origin!==t)return;let r=n.data;if(r?.type===`fkn-packages-ready`)return i();r?.type===`fkn-packages-failed`&&i(c(`unavailable`,typeof r.message==`string`&&r.message?r.message:`packages.mount: the package failed to boot`))},o=setTimeout(()=>i(c(`timeout`,`packages.mount: the package did not register a connection handler`)),A);window.addEventListener(`message`,a)}),M=async(e,t)=>{let{iframe:r}=t;if(!(r instanceof HTMLIFrameElement))throw c(`invalid`,`packages.mount: pass the iframe to load the package into`);if(!r.isConnected)throw c(`invalid`,`packages.mount: the iframe must be in the document before mounting into it`);k(r);let i=await(await l()).packages.frame(e);if(`error`in i)throw c(i.error,i.message);r.src=i.url;let a={done:!1},o=()=>{},s=new Promise(e=>{o=e}),u=n.t(`mounted package`),f=()=>{if(!a.done){a.done=!0,u();try{r.contentWindow?.postMessage({type:`fkn-packages-close`},i.origin)}catch{}r.src=`about:blank`,o()}};try{await j(r,i.origin)}catch(e){throw f(),e}let p=new MessageChannel,m=r.contentWindow;if(!m)throw f(),c(`unavailable`,`packages.mount: the frame was detached before it could connect`);m.postMessage({type:`fkn-packages-port`,from:i.from,protocol:t.protocol,uri:i.uri,name:i.name,version:i.version},i.origin,[p.port2]);try{m.postMessage({type:`fkn-packages-visibility`,visible:!0},i.origin)}catch{}if(t.raw)return{closed:s,port:p.port1,frame:r,unmount:f};try{return{remote:await d(t.payload,p.port1,{signal:t.signal,closed:s}),closed:s,port:p.port1,frame:r,unmount:f}}catch(e){throw f(),e}},N=(e,t,n)=>d(t,e,{signal:n?.signal}),P=null,F=!1,I=new Set,L=[],R=new Map,z=!1,B=!1,V=e=>{let t=R.get(e);t&&(R.delete(e),t())},H=(e,t)=>{try{e.postMessage({type:`fkn-packages-nack`,message:t})}catch{}try{e.close()}catch{}},U=async(e,t)=>{let{port:n,...r}=e;e.port.addEventListener(`message`,t=>{t.data?.type===`fkn-packages-disconnect`&&V(e.port)});let i;try{i=await t.createPayload(r)}catch(t){throw H(e.port,t instanceof Error?t.message:`the package failed to produce a connection`),t}let a=new Promise(t=>R.set(e.port,t)),o=await u(i,e.port);t.handler?.({...r,remote:o,closed:a,port:e.port})},W=()=>{z||typeof window>`u`||window.parent===window||(z=!0,window.addEventListener(`message`,e=>{if(e.source!==window.parent)return;let t=e.data;if(t?.type===`fkn-packages-port`){let n=e.ports[0];if(!n)return;let r={port:n,from:typeof t.from==`string`?t.from:``,brokered:e.origin===o,protocol:typeof t.protocol==`string`?t.protocol:null,uri:typeof t.uri==`string`?t.uri:``,name:typeof t.name==`string`?t.name:``,version:typeof t.version==`string`?t.version:``};P?U(r,P).catch(e=>console.warn(`packages.onConnect:`,e)):L.push(r)}if(t?.type===`fkn-packages-close`)for(let e of[...R.keys()])V(e);if(t?.type===`fkn-packages-visibility`){F=t.visible===!0;for(let e of I)try{e(F)}catch{}}}))},G=()=>{B||typeof window>`u`||window.parent===window||(B=!0,window.parent.postMessage({type:`fkn-packages-ready`},`*`))},K=(e,t)=>{if(typeof window>`u`)return{unsubscribe:()=>{}};W();let n={createPayload:e,handler:t};for(P=n,G();L.length&&P===n;)U(L.shift(),n).catch(e=>console.warn(`packages.onConnect:`,e));return{unsubscribe:()=>{P===n&&(P=null)}}},q=()=>F,J=e=>{if(typeof window>`u`)return{unsubscribe:()=>{}};W(),I.add(e);try{e(F)}catch{}return{unsubscribe:()=>{I.delete(e)}}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return i}});
@@ -1,7 +1,7 @@
1
- import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CJk3vE9P.js";
1
+ import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CDdIE_Es.js";
2
2
  import { Remote } from "osra";
3
3
  declare namespace packages_d_exports {
4
- export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, MountOptions, MountedPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, uninstall };
4
+ export { AppConnectOptions, Connect, ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, InstallOptions, InstalledPackage, MountOptions, MountedPackage, PackageConnection, PackageQuery, PackageResult, PackageView, PackagesError, PackagesErrorCode, PickOptions, Placement, Radii, RawPackageConnection, ShowOptions, SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, supportsTemporary, uninstall };
5
5
  }
6
6
  type PackagesError = Error & {
7
7
  code: PackagesErrorCode;
@@ -10,11 +10,24 @@ type PackagesError = Error & {
10
10
  declare const search: (query: PackageQuery) => Promise<PackageResult[]>;
11
11
  /** FKN-rendered picker over the same search; resolves the user's selection, already installed. [] on cancel. */
12
12
  declare const pick: (query: PackageQuery, options?: PickOptions) => Promise<PackageResult[]>;
13
- /** Install a package for this app behind an FKN-rendered confirm, or with `{ noConfirm: true }` for a notice instead of a prompt. Resolves null when the user declines. */
13
+ /**
14
+ * Install a package for this app behind an FKN-rendered confirm, or with `{ noConfirm: true }` for a
15
+ * notice instead of a prompt. Resolves null when the user declines.
16
+ *
17
+ * `{ temporary: true }` installs it for this tab only, with no install record: see
18
+ * `InstallOptions.temporary`. Throws a PackagesError with code 'unsupported', having installed nothing,
19
+ * on an fkn.app too old to hold that, so an app never ends up keeping what it asked not to keep.
20
+ */
14
21
  declare const install: (uri: string, options?: InstallOptions) => Promise<InstalledPackage | null>;
15
- /** The packages installed by this app. */
22
+ /**
23
+ * Whether fkn.app can install a package temporarily, asked with no install attempted. False on an
24
+ * fkn.app older than `InstallOptions.temporary`; on an @fkn/lib older than it this export is undefined,
25
+ * so `await packages.supportsTemporary?.() === true` holds for both.
26
+ */
27
+ declare const supportsTemporary: () => Promise<boolean>;
28
+ /** The packages installed by this app, kept and temporary. A temporary one reads `temporary: true`. */
16
29
  declare const list: () => Promise<InstalledPackage[]>;
17
- /** Uninstall a package from this app; its frames and connections are torn down. */
30
+ /** Uninstall a package from this app, kept or temporary; its frames and connections are torn down. */
18
31
  declare const uninstall: (uri: string) => Promise<void>;
19
32
  type ShowOptions = {
20
33
  /**
@@ -152,4 +165,4 @@ declare const isVisible: () => boolean;
152
165
  declare const onVisibilityChange: (handler: (visible: boolean) => void) => {
153
166
  unsubscribe: () => void;
154
167
  };
155
- export { pick as C, uninstall as E, packages_d_exports as S, show as T, isVisible as _, IncomingConnectionInfo as a, onConnect as b, PackageConnection as c, RawPackageConnection as d, ShowOptions as f, install as g, hide as h, IncomingConnection as i, PackageView as l, connect as m, Connect as n, MountOptions as o, attach as p, ConnectPayload as r, MountedPackage as s, AppConnectOptions as t, PackagesError as u, list as v, search as w, onVisibilityChange as x, mount as y };
168
+ export { pick as C, uninstall as D, supportsTemporary as E, packages_d_exports as S, show as T, isVisible as _, IncomingConnectionInfo as a, onConnect as b, PackageConnection as c, RawPackageConnection as d, ShowOptions as f, install as g, hide as h, IncomingConnection as i, PackageView as l, connect as m, Connect as n, MountOptions as o, attach as p, ConnectPayload as r, MountedPackage as s, AppConnectOptions as t, PackagesError as u, list as v, search as w, onVisibilityChange as x, mount as y };
package/packages.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./packages-DT8vPB5_.cjs");exports.attach=e.t,exports.connect=e.n,exports.hide=e.r,exports.install=e.i,exports.isVisible=e.a,exports.list=e.o,exports.mount=e.s,exports.onConnect=e.c,exports.onVisibilityChange=e.l,exports.pick=e.d,exports.search=e.f,exports.show=e.p,exports.uninstall=e.m;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./packages-Cb8FXQu1.cjs");exports.attach=e.t,exports.connect=e.n,exports.hide=e.r,exports.install=e.i,exports.isVisible=e.a,exports.list=e.o,exports.mount=e.s,exports.onConnect=e.c,exports.onVisibilityChange=e.l,exports.pick=e.d,exports.search=e.f,exports.show=e.p,exports.supportsTemporary=e.m,exports.uninstall=e.h;
package/packages.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CJk3vE9P.js";
2
- import { C as pick, E as uninstall, T as show, _ as isVisible, a as IncomingConnectionInfo, b as onConnect, c as PackageConnection, d as RawPackageConnection, f as ShowOptions, g as install, h as hide, i as IncomingConnection, l as PackageView, m as connect, n as Connect, o as MountOptions, p as attach, r as ConnectPayload, s as MountedPackage, t as AppConnectOptions, u as PackagesError, v as list, w as search, x as onVisibilityChange, y as mount } from "./packages-BlJK4kSJ.js";
3
- export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, MountOptions, MountedPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, type Placement, type Radii, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, uninstall };
1
+ import { E as InstalledPackage, F as PackageResult, I as PackagesErrorCode, J as Radii, P as PackageQuery, R as PickOptions, Rt as SurfaceRect, T as InstallOptions, m as ConnectOptions, z as Placement } from "./contract-CDdIE_Es.js";
2
+ import { C as pick, D as uninstall, E as supportsTemporary, T as show, _ as isVisible, a as IncomingConnectionInfo, b as onConnect, c as PackageConnection, d as RawPackageConnection, f as ShowOptions, g as install, h as hide, i as IncomingConnection, l as PackageView, m as connect, n as Connect, o as MountOptions, p as attach, r as ConnectPayload, s as MountedPackage, t as AppConnectOptions, u as PackagesError, v as list, w as search, x as onVisibilityChange, y as mount } from "./packages-SwO4CxMl.js";
3
+ export { AppConnectOptions, Connect, type ConnectOptions, ConnectPayload, IncomingConnection, IncomingConnectionInfo, type InstallOptions, type InstalledPackage, MountOptions, MountedPackage, PackageConnection, type PackageQuery, type PackageResult, PackageView, PackagesError, type PackagesErrorCode, type PickOptions, type Placement, type Radii, RawPackageConnection, ShowOptions, type SurfaceRect, attach, connect, hide, install, isVisible, list, mount, onConnect, onVisibilityChange, pick, search, show, supportsTemporary, uninstall };
package/packages.js CHANGED
@@ -1 +1 @@
1
- export { t as attach, n as connect, r as hide, i as install, a as isVisible, o as list, s as mount, c as onConnect, l as onVisibilityChange, d as pick, f as search, p as show, m as uninstall } from "./packages-Cws_rcgf.js";
1
+ export { t as attach, n as connect, r as hide, i as install, a as isVisible, o as list, s as mount, c as onConnect, l as onVisibilityChange, d as pick, f as search, p as show, m as supportsTemporary, h as uninstall } from "./packages-BqY5yoIM.js";
@@ -1 +1 @@
1
- const e=require("./broker-frame-CF4-yXtj.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./busy-BXbVH595.cjs"),r=require("./relay-choice-JC_JJY_M.cjs");var i=typeof FinalizationRegistry>`u`?void 0:new FinalizationRegistry(e=>e()),a=e=>{let t=e.body;if(!t)return e;let r=n.t(`streamed response`),a=t.getReader(),o=new ReadableStream({pull:async e=>{try{let{done:t,value:n}=await a.read();if(t){r(),e.close();return}e.enqueue(n)}catch(t){r(),e.error(t)}},cancel:async e=>{r(),await a.cancel(e).catch(()=>{})}}),s=new Response(o,{status:e.status,statusText:e.statusText,headers:e.headers});return i?.register(s,r),s},o=async e=>{if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e:new Request(`https://body.invalid/`,{method:`POST`,body:e,duplex:`half`}).arrayBuffer()},s=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},c=(e,n)=>(n?.relay===void 0?t.o:t.s(`a relay choice`)).then(t=>(n?.relay!==void 0&&r.t(t,`cloud.fetch`),t.cloud.fetch(e,n))).then(a),l=async(t,n)=>{if(e.r(t),typeof t==`object`&&t&&!(t instanceof URL)&&typeof t.url==`string`){let e=t,r={};e.headers.forEach((e,t)=>{r[t]=e});let i=await o(n?.body===void 0?await s(e):n.body);return c(e.url,{...n,method:n?.method??e.method,headers:n?.headers??r,body:i})}let r=t instanceof URL?t.href:t,i=await o(n?.body);return c(r,n?.body===void 0?n:{...n,body:i})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});
1
+ const e=require("./broker-frame-BKHtDSjv.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./busy-BXbVH595.cjs"),r=require("./relay-choice-JC_JJY_M.cjs");var i=typeof FinalizationRegistry>`u`?void 0:new FinalizationRegistry(e=>e()),a=e=>{let t=e.body;if(!t)return e;let r=n.t(`streamed response`),a=t.getReader(),o=new ReadableStream({pull:async e=>{try{let{done:t,value:n}=await a.read();if(t){r(),e.close();return}e.enqueue(n)}catch(t){r(),e.error(t)}},cancel:async e=>{r(),await a.cancel(e).catch(()=>{})}}),s=new Response(o,{status:e.status,statusText:e.statusText,headers:e.headers});return i?.register(s,r),s},o=async e=>{if(e!=null)return typeof e==`string`||e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e:new Request(`https://body.invalid/`,{method:`POST`,body:e,duplex:`half`}).arrayBuffer()},s=async e=>{if(e.method===`GET`||e.method===`HEAD`)return;let t=await e.clone().arrayBuffer();return t.byteLength?t:void 0},c=(e,n)=>(n?.relay===void 0?t.o:t.s(`a relay choice`)).then(t=>(n?.relay!==void 0&&r.t(t,`cloud.fetch`),t.cloud.fetch(e,n))).then(a),l=async(t,n)=>{if(e.r(t),typeof t==`object`&&t&&!(t instanceof URL)&&typeof t.url==`string`){let e=t,r={};e.headers.forEach((e,t)=>{r[t]=e});let i=await o(n?.body===void 0?await s(e):n.body);return c(e.url,{...n,method:n?.method??e.method,headers:n?.headers??r,body:i})}let r=t instanceof URL?t.href:t,i=await o(n?.body);return c(r,n?.body===void 0?n:{...n,body:i})};Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return l}});
@@ -1,5 +1,5 @@
1
- import { X as Resolvers } from "./contract-CJk3vE9P.js";
2
- import "./api-BlYVLNjo.js";
1
+ import { X as Resolvers } from "./contract-CDdIE_Es.js";
2
+ import "./api-DhwJz0vo.js";
3
3
  type ProxyFetch = Resolvers['cloud']['fetch'];
4
4
  type FetchParameters = Parameters<ProxyFetch>;
5
5
  declare const cloudFetch: (input: FetchParameters[0], init?: FetchParameters[1]) => Promise<Response>;
@@ -1,5 +1,5 @@
1
- import { r as e } from "./broker-frame-vjSpBa8d.js";
2
- import { o as t, s as n } from "./api-DRglK7ft.js";
1
+ import { r as e } from "./broker-frame-BClLp2ZV.js";
2
+ import { o as t, s as n } from "./api-DeGR_tzF.js";
3
3
  import { t as r } from "./busy-C1JPjoZ_.js";
4
4
  import { t as i } from "./relay-choice-Bb3oP2gw.js";
5
5
  // src/proxy.ts
@@ -1,5 +1,5 @@
1
1
  import { D as RelayChoice, f as Frame } from "./index-HMfzm6dF.js";
2
- import { K as RELAY_UNAVAILABLE } from "./contract-CJk3vE9P.js";
2
+ import { K as RELAY_UNAVAILABLE } from "./contract-CDdIE_Es.js";
3
3
  import { Server, Socket } from "net";
4
4
  import { Socket as Socket$1 } from "dgram";
5
5
  /** What `net.connect`, `net.createServer`, `dgram.createSocket` and `http.request` take beside Node's own options; Node ignores it. */
@@ -1,4 +1,4 @@
1
- import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CJk3vE9P.js";
1
+ import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CDdIE_Es.js";
2
2
  declare namespace rooms_d_exports {
3
3
  export { RoomClaimOptions as ClaimOptions, RoomCreateOptions as CreateOptions, RoomJoinOptions as JoinOptions, RoomOpenOptions as OpenOptions, Room, RoomBacklog, RoomDefaults, RoomEnd, RoomEnvelope, RoomEvent, RoomJson, RoomMailbox, RoomMember, RoomMessage, RoomPermission, RoomPermissions, RoomSchema, RoomType, RoomsError, RoomsErrorCode, available, create, join, open };
4
4
  }
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./busy-BXbVH595.cjs"),r=require("./contract.cjs");var i=e.t({available:()=>S,create:()=>T,join:()=>E,open:()=>w}),a={wrongKey:`rooms: wrong room key`,inviteNoKey:`rooms: the invite carries no key`,badName:`rooms: the name is not one a room can have`,badKeyOption:`rooms: the key is not 32 bytes base64url`,noSuchMember:`rooms: no such member`,noSuchMessage:`rooms: no such message`,roomFull:`rooms: the room is full`,tooManyConnections:`rooms: too many connections`,tooManyBlocks:`rooms: too many blocks`,tooManyClaims:`rooms: too many claims`,mailboxFull:`rooms: the mailbox is full`,outOfStorage:`rooms: the owner is out of storage`,outOfQuota:`rooms: out of daily bandwidth`,blocked:`rooms: you are blocked from this room`,cannotSend:`rooms: you cannot send here`,permissionDenied:`rooms: permission denied`,notOwner:`rooms: not the room owner`,ownerNotRemovable:`rooms: the owner cannot be removed`,ownerKeepsEvery:`rooms: the owner keeps every permission`,removeYourself:`rooms: you cannot remove yourself`,needsAccount:`rooms: claiming needs an account`,nameClaimed:`rooms: the name is claimed`,notClaimed:`rooms: the room is not claimed`,noMailbox:`rooms: the room keeps no messages`,badLimit:`rooms: the limit is out of range`,badDescription:`rooms: the description is not one a claim can carry`,notClaimer:`rooms: only the app that claimed the room can describe it`,notReleaser:`rooms: only the app that claimed the room can release it`,notClaimingApp:`rooms: only the app that claimed the room can change it`,badTemporary:`rooms: the temporary duration is not one a claim can carry`,notTemporaryClaimer:`rooms: only the app that claimed the room can set when it expires`,temporaryUnavailable:`rooms: temporary claims are not available`,mailboxUnavailable:`rooms: the mailbox switch is not available`,guestUnavailable:`rooms: guest joins are not available`,schemasUnavailable:`rooms: room schemas are not available`,badSchema:`rooms: the schema is not one a room can take`,newerSchema:`rooms: the room holds a newer schema`,noSchema:`rooms: the room has no schema`,misfit:`rooms: the message does not fit the room's schema`,ownerSends:`rooms: only the owner sends this type`,accountSends:`rooms: sending this needs an account`,perAccount:`rooms: you have as many of these here as the room allows`,tooFast:`rooms: sending too fast`,tooLarge:`rooms: the message is too large`,unavailable:`rooms: rooms are unavailable`,notEnabled:`rooms: rooms are not available`,alreadyJoined:`rooms: already joined`,notJoined:`rooms: not joined`,malformed:`rooms: malformed frame`,ended:`rooms: the room has ended`},o=(e,t)=>Object.assign(Error(t),{code:e}),s=e=>e instanceof Error&&typeof e.code==`string`,c={send:!0,receive:!0,maxMessageBytes:262144},l=2048,u=()=>({messages:0,bytes:0,cap:5e8,archived:!1}),d=async()=>{if(!t.l)return;let e=(await t.s(`a room`).catch(()=>void 0))?.rooms;return typeof e?.open==`function`?e:void 0},f=()=>{throw o(`unavailable`,a.unavailable)},p=e=>e===`blocked`?`blocked`:e===`not-found`?`ended`:`unavailable`,m=e=>{if(e!==void 0&&e!==!1)return e===!0?r.ROOM_TEMPORARY_MS.default:typeof e!=`number`||!Number.isInteger(e)?null:e>=r.ROOM_TEMPORARY_MS.min&&e<=r.ROOM_TEMPORARY_MS.max?e:null},h=(e,t)=>{let n=t?e?.guest:e;return typeof n?.join==`function`?n:void 0},g=e=>{let t;try{t=JSON.stringify(e)}catch{}let n=t===void 0?void 0:JSON.parse(t),r=typeof n==`object`&&!!n&&!Array.isArray(n)&&typeof n.type==`string`;if(t===void 0||!r||t.length>l)throw o(`invalid`,a.misfit);return t},_=e=>{let t;try{t=JSON.parse(JSON.stringify(e))}catch{}if(typeof t!=`object`||!t||Array.isArray(t))throw o(`invalid`,a.badSchema);return t},v=e=>e?.schema===void 0?e:{...e,schema:_(e.schema)},y=e=>{if(e.schemas!==!0)throw o(`unavailable`,a.schemasUnavailable);return e},b=e=>{let t=e?.guest;if(t!==void 0&&typeof t!=`boolean`)throw o(`invalid`,a.malformed);return t===!0},x=async(e,r)=>{let i=e.invite,l=e,d=0,f=e.self,v=e.owner,b=e.claimed,x=e.mailbox,S=0,C=await e.defaults().catch(()=>c),w=e.schemas===!0?await Promise.resolve(e.schema()).catch(()=>null):null,T=0,E=!1,D=new Set,O=new Set,k=n.t(`room`),A=()=>{},j=()=>{},M=new Promise(e=>{j=e}),N=e=>{let t=[...O];O.clear();for(let n of t)try{n(e)}catch{}},P=e=>{E||(E=!0,A(),D.clear(),k(),N(o(`closed`,a.ended)),j({reason:e}))},F=e=>{if(E)return;let t=e;if(t.type===`defaults`&&(C=t.defaults),t.type===`schema`&&(T+=1,w=t.schema),t.type===`message`||t.type===`edited`){let e={...t.message,envelope:t.message.envelope??null};t=t.type===`message`?{...t,message:e}:{type:`edited`,message:e}}if(t.type===`permissions`&&t.id===f.id&&(f={id:f.id,permissions:t.permissions,maxMessageBytes:t.maxMessageBytes}),t.type===`claim`){S+=1;let e=t.claimed&&t.mailbox!==!1;t={type:`claim`,claimed:t.claimed,owner:t.owner,mailbox:e},b=t.claimed,v=t.owner,x=e?u():null}for(let e of[...D])try{e(t)}catch{}},I=(e,t)=>{Promise.resolve(e.on(F)).catch(()=>{}),Promise.resolve(e.closed).then(e=>{t===d&&P(e.reason)},()=>{})},L=async(e,t)=>{let n=h(e,r);if(!n)return P(`unavailable`);let a=await n.join(i).catch(()=>void 0);if(E||t!==d)return;if(!a)return P(`unavailable`);if(`error`in a)return P(p(a.error));if(a.self.id!==f.id)return Promise.resolve(a.leave()).catch(()=>{}),P(`unavailable`);l=a,f=a.self,v=a.owner,b=a.claimed,x=a.mailbox,I(a,t);let o=await a.defaults().catch(()=>void 0);if(o&&!E&&t===d&&(C=o),a.schemas!==!0)return;let s=await Promise.resolve(a.schema()).catch(()=>void 0);s!==void 0&&!E&&t===d&&(w=s)};A=t.u((e,t)=>{let n=d;d=t,!(E||n===0||n===t)&&(N(o(`unavailable`,a.unavailable)),L(e.rooms,t))}),I(e,d);let R=async e=>{if(E)throw o(`closed`,a.ended);let t=()=>{},n=new Promise((e,n)=>{t=n});O.add(t);try{return await Promise.race([Promise.resolve(e(l)),n])}catch(e){throw s(e)?e:o(`unavailable`,a.unavailable)}finally{O.delete(t)}},z=async e=>{let t=await R(e);if(`error`in t)throw o(t.error,t.message)},B=async e=>{let t=await R(e);if(typeof t==`object`&&t&&`error`in t)throw o(t.error,t.message);return t};return{id:e.id,name:e.name,key:e.key,invite:i,get self(){return f},get owner(){return v},get claimed(){return b},get mailbox(){return x},defaults:()=>C,members:()=>R(e=>e.members()),schema:()=>w,send:async(e,t)=>{if(t===void 0)return z(t=>t.send(e));let n=g(t);return z(t=>y(t).send(e,n))},edit:async(e,t,n)=>{if(n===void 0)return z(n=>n.edit(e,t));let r=g(n);return z(n=>y(n).edit(e,t,r))},setSchema:async e=>{let t=_(e),n=T;await z(e=>y(e).setSchema(t)),T===n&&(w=t)},delete:(e,t)=>z(n=>n.delete(e,t)),backlog:(e,t)=>B(n=>n.backlog(e,t)),setDefault:(e,t)=>z(n=>n.setDefault(e,t)),limit:(e,t)=>z(n=>n.limit(e,t)),grant:(e,t)=>z(n=>n.grant(e,t)),revoke:(e,t)=>z(n=>n.revoke(e,t)),remove:e=>z(t=>t.remove(e)),block:e=>z(t=>t.block(e)),unblock:e=>z(t=>t.unblock(e)),claim:async e=>{let t=e?.description;if(t!==void 0&&typeof t!=`string`)throw o(`invalid`,a.badDescription);let n=m(e?.temporary);if(n===null)throw o(`invalid`,a.badTemporary);let r=e?.mailbox;if(r!==void 0&&typeof r!=`boolean`)throw o(`invalid`,a.malformed);let i={...t===void 0?{}:{description:t},...n===void 0?{}:{temporary:n},...r===void 0?{}:{mailbox:r}};return Object.keys(i).length===0?z(e=>e.claim()):z(e=>{if(n!==void 0&&e.temporaryClaims!==!0)throw o(`unavailable`,a.temporaryUnavailable);if(r===!1&&e.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return e.claim(i)})},setMailbox:async e=>{if(typeof e!=`boolean`)throw o(`invalid`,a.malformed);let t=S;await z(t=>{if(t.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return t.setMailbox(e)}),S===t&&(e?x===null&&(x=u()):x=null)},release:()=>z(e=>e.release()),usage:async()=>{let e=await B(e=>e.usage());return x=e,e},on:async e=>E?()=>{}:(D.add(e),()=>{D.delete(e)}),leave:async()=>{await Promise.resolve(l.leave()).catch(()=>{}),P(`left`)},closed:M}},S=async()=>{let e=await d();return e?e.available().catch(()=>!1):!1},C=async(e,t,n)=>{let r=await d();if(!r)throw o(`unavailable`,a.unavailable);let i=h(r,e);if(!i)throw o(`unavailable`,a.guestUnavailable);let s=await n(i).catch(f);if(`error`in s)throw o(s.error,s.message);if(t?.schema!==void 0&&s.schemas!==!0)throw await Promise.resolve(s.leave()).catch(()=>{}),o(`unavailable`,a.schemasUnavailable);return x(s,e)},w=async(e,t)=>{if(typeof e!=`string`||e.length===0||e.length>72)throw o(`invalid`,a.badName);let n=b(t),r=v(t);return C(n,r,t=>t.open(e,r))},T=async e=>{let t=b(e),n=v(e);return C(t,n,e=>e.create(n))},E=async(e,t)=>{let n=typeof e==`string`?e.indexOf(`.`):-1;if(n<=0||n===e.length-1)throw o(`invalid`,a.inviteNoKey);return C(b(t),void 0,n=>n.join(e,t))};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return S}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./busy-BXbVH595.cjs"),r=require("./contract.cjs");var i=e.t({available:()=>S,create:()=>T,join:()=>E,open:()=>w}),a={wrongKey:`rooms: wrong room key`,inviteNoKey:`rooms: the invite carries no key`,badName:`rooms: the name is not one a room can have`,badKeyOption:`rooms: the key is not 32 bytes base64url`,noSuchMember:`rooms: no such member`,noSuchMessage:`rooms: no such message`,roomFull:`rooms: the room is full`,tooManyConnections:`rooms: too many connections`,tooManyBlocks:`rooms: too many blocks`,tooManyClaims:`rooms: too many claims`,mailboxFull:`rooms: the mailbox is full`,outOfStorage:`rooms: the owner is out of storage`,outOfQuota:`rooms: out of daily bandwidth`,blocked:`rooms: you are blocked from this room`,cannotSend:`rooms: you cannot send here`,permissionDenied:`rooms: permission denied`,notOwner:`rooms: not the room owner`,ownerNotRemovable:`rooms: the owner cannot be removed`,ownerKeepsEvery:`rooms: the owner keeps every permission`,removeYourself:`rooms: you cannot remove yourself`,needsAccount:`rooms: claiming needs an account`,nameClaimed:`rooms: the name is claimed`,notClaimed:`rooms: the room is not claimed`,noMailbox:`rooms: the room keeps no messages`,badLimit:`rooms: the limit is out of range`,badDescription:`rooms: the description is not one a claim can carry`,notClaimer:`rooms: only the app that claimed the room can describe it`,notReleaser:`rooms: only the app that claimed the room can release it`,notClaimingApp:`rooms: only the app that claimed the room can change it`,badTemporary:`rooms: the temporary duration is not one a claim can carry`,notTemporaryClaimer:`rooms: only the app that claimed the room can set when it expires`,temporaryUnavailable:`rooms: temporary claims are not available`,mailboxUnavailable:`rooms: the mailbox switch is not available`,guestUnavailable:`rooms: guest joins are not available`,schemasUnavailable:`rooms: room schemas are not available`,badSchema:`rooms: the schema is not one a room can take`,newerSchema:`rooms: the room holds a newer schema`,noSchema:`rooms: the room has no schema`,misfit:`rooms: the message does not fit the room's schema`,ownerSends:`rooms: only the owner sends this type`,accountSends:`rooms: sending this needs an account`,perAccount:`rooms: you have as many of these here as the room allows`,tooFast:`rooms: sending too fast`,tooLarge:`rooms: the message is too large`,unavailable:`rooms: rooms are unavailable`,notEnabled:`rooms: rooms are not available`,alreadyJoined:`rooms: already joined`,notJoined:`rooms: not joined`,malformed:`rooms: malformed frame`,ended:`rooms: the room has ended`},o=(e,t)=>Object.assign(Error(t),{code:e}),s=e=>e instanceof Error&&typeof e.code==`string`,c={send:!0,receive:!0,maxMessageBytes:262144},l=2048,u=()=>({messages:0,bytes:0,cap:5e8,archived:!1}),d=async()=>{if(!t.l)return;let e=(await t.s(`a room`).catch(()=>void 0))?.rooms;return typeof e?.open==`function`?e:void 0},f=()=>{throw o(`unavailable`,a.unavailable)},p=e=>e===`blocked`?`blocked`:e===`not-found`?`ended`:`unavailable`,m=e=>{if(e!==void 0&&e!==!1)return e===!0?r.ROOM_TEMPORARY_MS.default:typeof e!=`number`||!Number.isInteger(e)?null:e>=r.ROOM_TEMPORARY_MS.min&&e<=r.ROOM_TEMPORARY_MS.max?e:null},h=(e,t)=>{let n=t?e?.guest:e;return typeof n?.join==`function`?n:void 0},g=e=>{let t;try{t=JSON.stringify(e)}catch{}let n=t===void 0?void 0:JSON.parse(t),r=typeof n==`object`&&!!n&&!Array.isArray(n)&&typeof n.type==`string`;if(t===void 0||!r||t.length>l)throw o(`invalid`,a.misfit);return t},_=e=>{let t;try{t=JSON.parse(JSON.stringify(e))}catch{}if(typeof t!=`object`||!t||Array.isArray(t))throw o(`invalid`,a.badSchema);return t},v=e=>e?.schema===void 0?e:{...e,schema:_(e.schema)},y=e=>{if(e.schemas!==!0)throw o(`unavailable`,a.schemasUnavailable);return e},b=e=>{let t=e?.guest;if(t!==void 0&&typeof t!=`boolean`)throw o(`invalid`,a.malformed);return t===!0},x=async(e,r)=>{let i=e.invite,l=e,d=0,f=e.self,v=e.owner,b=e.claimed,x=e.mailbox,S=0,C=await e.defaults().catch(()=>c),w=e.schemas===!0?await Promise.resolve(e.schema()).catch(()=>null):null,T=0,E=!1,D=new Set,O=new Set,k=n.t(`room`),A=()=>{},j=()=>{},M=new Promise(e=>{j=e}),N=e=>{let t=[...O];O.clear();for(let n of t)try{n(e)}catch{}},P=e=>{E||(E=!0,A(),D.clear(),k(),N(o(`closed`,a.ended)),j({reason:e}))},F=e=>{if(E)return;let t=e;if(t.type===`defaults`&&(C=t.defaults),t.type===`schema`&&(T+=1,w=t.schema),t.type===`message`||t.type===`edited`){let e={...t.message,envelope:t.message.envelope??null};t=t.type===`message`?{...t,message:e}:{type:`edited`,message:e}}if(t.type===`permissions`&&t.id===f.id&&(f={id:f.id,permissions:t.permissions,maxMessageBytes:t.maxMessageBytes}),t.type===`claim`){S+=1;let e=t.claimed&&t.mailbox!==!1;t={type:`claim`,claimed:t.claimed,owner:t.owner,mailbox:e},b=t.claimed,v=t.owner,x=e?u():null}for(let e of[...D])try{e(t)}catch{}},I=(e,t)=>{Promise.resolve(e.on(F)).catch(()=>{}),Promise.resolve(e.closed).then(e=>{t===d&&P(e.reason)},()=>{})},L=async(e,t)=>{let n=h(e,r);if(!n)return P(`unavailable`);let a=await n.join(i).catch(()=>void 0);if(E||t!==d)return;if(!a)return P(`unavailable`);if(`error`in a)return P(p(a.error));if(a.self.id!==f.id)return Promise.resolve(a.leave()).catch(()=>{}),P(`unavailable`);l=a,f=a.self,v=a.owner,b=a.claimed,x=a.mailbox,I(a,t);let o=await a.defaults().catch(()=>void 0);if(o&&!E&&t===d&&(C=o),a.schemas!==!0)return;let s=await Promise.resolve(a.schema()).catch(()=>void 0);s!==void 0&&!E&&t===d&&(w=s)};A=t.u((e,t)=>{let n=d;d=t,!(E||n===0||n===t)&&(N(o(`unavailable`,a.unavailable)),L(e.rooms,t))}),I(e,d);let R=async e=>{if(E)throw o(`closed`,a.ended);let t=()=>{},n=new Promise((e,n)=>{t=n});O.add(t);try{return await Promise.race([Promise.resolve(e(l)),n])}catch(e){throw s(e)?e:o(`unavailable`,a.unavailable)}finally{O.delete(t)}},z=async e=>{let t=await R(e);if(`error`in t)throw o(t.error,t.message)},B=async e=>{let t=await R(e);if(typeof t==`object`&&t&&`error`in t)throw o(t.error,t.message);return t};return{id:e.id,name:e.name,key:e.key,invite:i,get self(){return f},get owner(){return v},get claimed(){return b},get mailbox(){return x},defaults:()=>C,members:()=>R(e=>e.members()),schema:()=>w,send:async(e,t)=>{if(t===void 0)return z(t=>t.send(e));let n=g(t);return z(t=>y(t).send(e,n))},edit:async(e,t,n)=>{if(n===void 0)return z(n=>n.edit(e,t));let r=g(n);return z(n=>y(n).edit(e,t,r))},setSchema:async e=>{let t=_(e),n=T;await z(e=>y(e).setSchema(t)),T===n&&(w=t)},delete:(e,t)=>z(n=>n.delete(e,t)),backlog:(e,t)=>B(n=>n.backlog(e,t)),setDefault:(e,t)=>z(n=>n.setDefault(e,t)),limit:(e,t)=>z(n=>n.limit(e,t)),grant:(e,t)=>z(n=>n.grant(e,t)),revoke:(e,t)=>z(n=>n.revoke(e,t)),remove:e=>z(t=>t.remove(e)),block:e=>z(t=>t.block(e)),unblock:e=>z(t=>t.unblock(e)),claim:async e=>{let t=e?.description;if(t!==void 0&&typeof t!=`string`)throw o(`invalid`,a.badDescription);let n=m(e?.temporary);if(n===null)throw o(`invalid`,a.badTemporary);let r=e?.mailbox;if(r!==void 0&&typeof r!=`boolean`)throw o(`invalid`,a.malformed);let i={...t===void 0?{}:{description:t},...n===void 0?{}:{temporary:n},...r===void 0?{}:{mailbox:r}};return Object.keys(i).length===0?z(e=>e.claim()):z(e=>{if(n!==void 0&&e.temporaryClaims!==!0)throw o(`unavailable`,a.temporaryUnavailable);if(r===!1&&e.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return e.claim(i)})},setMailbox:async e=>{if(typeof e!=`boolean`)throw o(`invalid`,a.malformed);let t=S;await z(t=>{if(t.mailboxSwitch!==!0)throw o(`unavailable`,a.mailboxUnavailable);return t.setMailbox(e)}),S===t&&(e?x===null&&(x=u()):x=null)},release:()=>z(e=>e.release()),usage:async()=>{let e=await B(e=>e.usage());return x=e,e},on:async e=>E?()=>{}:(D.add(e),()=>{D.delete(e)}),leave:async()=>{await Promise.resolve(l.leave()).catch(()=>{}),P(`left`)},closed:M}},S=async()=>{let e=await d();return e?e.available().catch(()=>!1):!1},C=async(e,t,n)=>{let r=await d();if(!r)throw o(`unavailable`,a.unavailable);let i=h(r,e);if(!i)throw o(`unavailable`,a.guestUnavailable);let s=await n(i).catch(f);if(`error`in s)throw o(s.error,s.message);if(t?.schema!==void 0&&s.schemas!==!0)throw await Promise.resolve(s.leave()).catch(()=>{}),o(`unavailable`,a.schemasUnavailable);return x(s,e)},w=async(e,t)=>{if(typeof e!=`string`||e.length===0||e.length>72)throw o(`invalid`,a.badName);let n=b(t),r=v(t);return C(n,r,t=>t.open(e,r))},T=async e=>{let t=b(e),n=v(e);return C(t,n,e=>e.create(n))},E=async(e,t)=>{let n=typeof e==`string`?e.indexOf(`.`):-1;if(n<=0||n===e.length-1)throw o(`invalid`,a.inviteNoKey);return C(b(t),void 0,n=>n.join(e,t))};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return S}});
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { l as t, s as n, u as r } from "./api-DRglK7ft.js";
2
+ import { l as t, s as n, u as r } from "./api-DeGR_tzF.js";
3
3
  import { t as i } from "./busy-C1JPjoZ_.js";
4
4
  import { ROOM_TEMPORARY_MS as a } from "./contract.js";
5
5
  // src/rooms.ts
package/rooms.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rooms-DHFS9cwA.cjs");exports.available=e.t,exports.create=e.n,exports.join=e.r,exports.open=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rooms-CYP6g-p9.cjs");exports.available=e.t,exports.create=e.n,exports.join=e.r,exports.open=e.i;
package/rooms.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CJk3vE9P.js";
2
- import { a as join, i as create, n as RoomsError, o as open, r as available, t as Room } from "./rooms-0vp7HaAY.js";
1
+ import { $ as RoomCreateOptions, Q as RoomClaimOptions, Z as RoomBacklog, at as RoomJoinOptions, ct as RoomMember, dt as RoomPermission, et as RoomDefaults, ft as RoomPermissions, ht as RoomsErrorCode, lt as RoomMessage, mt as RoomType, nt as RoomEnvelope, ot as RoomJson, pt as RoomSchema, rt as RoomEvent, st as RoomMailbox, tt as RoomEnd, ut as RoomOpenOptions } from "./contract-CDdIE_Es.js";
2
+ import { a as join, i as create, n as RoomsError, o as open, r as available, t as Room } from "./rooms-3XplwXzb.js";
3
3
  export { type RoomClaimOptions as ClaimOptions, type RoomCreateOptions as CreateOptions, type RoomJoinOptions as JoinOptions, type RoomOpenOptions as OpenOptions, Room, type RoomBacklog, type RoomDefaults, type RoomEnd, type RoomEnvelope, type RoomEvent, type RoomJson, type RoomMailbox, type RoomMember, type RoomMessage, type RoomPermission, type RoomPermissions, type RoomSchema, type RoomType, RoomsError, type RoomsErrorCode, available, create, join, open };
package/rooms.js CHANGED
@@ -1 +1 @@
1
- export { t as available, n as create, r as join, i as open } from "./rooms-DP5stTEr.js";
1
+ export { t as available, n as create, r as join, i as open } from "./rooms-GZ798oSd.js";
@@ -1,4 +1,4 @@
1
- import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CJk3vE9P.js";
1
+ import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CDdIE_Es.js";
2
2
  declare namespace storage_d_exports {
3
3
  export { StorageError, StorageErrorCode, StorageProgress, StoragePutOptions, StoredBlob, StoredObject, StoredPage, available, remove as delete, get, list, put };
4
4
  }
@@ -1 +1 @@
1
- const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-DrvhPN56.cjs"),n=require("./contract.cjs"),r=require("./account-generation-ACCBzaI-.cjs"),i=require("./account-storage-dYWDpqsr.cjs");var a=e.t({available:()=>v,delete:()=>C,get:()=>x,list:()=>S,put:()=>y}),o=new Map(Object.values(n.STORAGE_REFUSALS).map(({code:e,message:t})=>[t,e])),s=new Set(o.values()),c=(e,t)=>Object.assign(Error(t),{code:e}),l=e=>c(n.STORAGE_REFUSALS[e].code,n.STORAGE_REFUSALS[e].message),u=e=>e instanceof Error&&s.has(e.code),d=e=>{if(u(e))return e;let t=e instanceof Error?e.message:``,n=o.get(t);return n?c(n,t):l(`unavailable`)},f=async()=>{if(!t.l)return;let e=(await t.s(`storage`).catch(()=>void 0))?.storage;return typeof e?.put==`function`?e:void 0},p=()=>{throw l(`unavailable`)},m=e=>typeof e==`object`&&!!e&&typeof e.error==`string`&&typeof e.message==`string`,h=(e,t,n)=>{throw e.error===`aborted`?t?.reason??new DOMException(`The operation was aborted.`,`AbortError`):(e.error===`account-changed`&&n&&r.r(n.generation),s.has(e.error)?c(e.error,e.message):l(`unavailable`))},g=async e=>{try{return await i.m(e)}catch(e){throw i.l(e)?l(`accountChanged`):e instanceof Error&&/not connected|not signed in/i.test(e.message)?l(`needsAccount`):l(`unavailable`)}},_=(e,t)=>(e.catch(()=>{}),t?Promise.race([e,new Promise((e,n)=>t.addEventListener(`abort`,()=>n(t.reason),{once:!0}))]):e),v=async()=>{let e=await f();return e?Promise.resolve(e.available()).catch(()=>!1):!1},y=async(e,t={})=>{let n=i.s(),{signal:r,onProgress:a,key:o}=t;r?.throwIfAborted();let s=typeof Blob<`u`&&e instanceof Blob,c=typeof ReadableStream<`u`&&e instanceof ReadableStream;if(!s&&!c)throw l(`notAFile`);let u=s?e.size:t.size;if(typeof u!=`number`||!Number.isSafeInteger(u)||u<0||s&&t.size!==void 0&&t.size!==u)throw l(`badSize`);let d=await f();if(!d)throw l(`unavailable`);let v=await g(n);r?.throwIfAborted();let y=await _(Promise.resolve(d.put(e,{size:u,...o===void 0?{}:{key:o},accountPin:v,...r?{signal:r}:{},...typeof a==`function`?{onProgress:e=>{try{a(e)}catch{}}}:{}})).catch(p),r);return m(y)?h(y,r,n):y},b=(e,t,n)=>{let r=(t,n)=>{if(t===void 0)return n;let r=Math.trunc(Number.isFinite(t)?t:t>0?e:-e);return r<0?Math.max(e+r,0):Math.min(r,e)},i=r(t,0);return{from:i,to:Math.max(i,r(n,e))}},x=async(e,n,r={})=>{if(typeof e!=`string`)throw l(`badUrl`);if(typeof n!=`string`)throw l(`badKey`);let{signal:i}=r;i?.throwIfAborted();let a=async()=>{let r=await f();if(!r)throw l(`unavailable`);let a=t.c()?.epoch,o=await _(Promise.resolve(r.get(e,n,i?{signal:i}:void 0)).catch(p),i);return m(o)?h(o,i):{handle:o,epoch:a}},o=await a(),s=async()=>{let e=t.c()?.epoch;return o.epoch!==void 0&&e!==void 0&&e!==o.epoch&&(o=await a()),o.handle},c=(e,t)=>{let n;return new ReadableStream({pull:async r=>{try{if(!n){let r=await s(),i=await Promise.resolve(r.read(e,t)).catch(p);if(m(i))return h(i);n=i.getReader()}let{value:i,done:a}=await n.read();a?r.close():r.enqueue(i)}catch(e){throw d(e)}},cancel:e=>n?.cancel(e)},{highWaterMark:0})},u=(e,t)=>({size:t-e,stream:()=>c(e,t),arrayBuffer:async()=>{let n=new Uint8Array(t-e),r=c(e,t).getReader(),i=0;for(;;){let{value:e,done:t}=await r.read();if(t)break;n.set(e,i),i+=e.length}return n.buffer},slice:(n,r)=>{let i=b(t-e,n,r);return u(e+i.from,e+i.to)}});return u(0,o.handle.size)},S=async(e={})=>{let t=i.s(),n=await f();if(!n)throw l(`unavailable`);let r=await g(t),{limit:a,cursor:o}=e,s=await Promise.resolve(n.list({accountPin:r,...a===void 0?{}:{limit:a},...o===void 0?{}:{cursor:o}})).catch(p);return m(s)?h(s,void 0,t):s},C=async e=>{let t=i.s();if(typeof e!=`string`)throw l(`badUrl`);let n=await f();if(!n)throw l(`unavailable`);let r=await g(t),a=await Promise.resolve(n.delete(e,{accountPin:r})).catch(p);m(a)&&h(a,void 0,t)};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return v}});
1
+ const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BkoXMcoe.cjs"),n=require("./contract.cjs"),r=require("./account-generation-DwMcJFGc.cjs"),i=require("./account-storage-gOL0HE6i.cjs");var a=e.t({available:()=>v,delete:()=>C,get:()=>x,list:()=>S,put:()=>y}),o=new Map(Object.values(n.STORAGE_REFUSALS).map(({code:e,message:t})=>[t,e])),s=new Set(o.values()),c=(e,t)=>Object.assign(Error(t),{code:e}),l=e=>c(n.STORAGE_REFUSALS[e].code,n.STORAGE_REFUSALS[e].message),u=e=>e instanceof Error&&s.has(e.code),d=e=>{if(u(e))return e;let t=e instanceof Error?e.message:``,n=o.get(t);return n?c(n,t):l(`unavailable`)},f=async()=>{if(!t.l)return;let e=(await t.s(`storage`).catch(()=>void 0))?.storage;return typeof e?.put==`function`?e:void 0},p=()=>{throw l(`unavailable`)},m=e=>typeof e==`object`&&!!e&&typeof e.error==`string`&&typeof e.message==`string`,h=(e,t,n)=>{throw e.error===`aborted`?t?.reason??new DOMException(`The operation was aborted.`,`AbortError`):(e.error===`account-changed`&&n&&r.r(n.generation),s.has(e.error)?c(e.error,e.message):l(`unavailable`))},g=async e=>{try{return await i.m(e)}catch(e){throw i.l(e)?l(`accountChanged`):e instanceof Error&&/not connected|not signed in/i.test(e.message)?l(`needsAccount`):l(`unavailable`)}},_=(e,t)=>(e.catch(()=>{}),t?Promise.race([e,new Promise((e,n)=>t.addEventListener(`abort`,()=>n(t.reason),{once:!0}))]):e),v=async()=>{let e=await f();return e?Promise.resolve(e.available()).catch(()=>!1):!1},y=async(e,t={})=>{let n=i.s(),{signal:r,onProgress:a,key:o}=t;r?.throwIfAborted();let s=typeof Blob<`u`&&e instanceof Blob,c=typeof ReadableStream<`u`&&e instanceof ReadableStream;if(!s&&!c)throw l(`notAFile`);let u=s?e.size:t.size;if(typeof u!=`number`||!Number.isSafeInteger(u)||u<0||s&&t.size!==void 0&&t.size!==u)throw l(`badSize`);let d=await f();if(!d)throw l(`unavailable`);let v=await g(n);r?.throwIfAborted();let y=await _(Promise.resolve(d.put(e,{size:u,...o===void 0?{}:{key:o},accountPin:v,...r?{signal:r}:{},...typeof a==`function`?{onProgress:e=>{try{a(e)}catch{}}}:{}})).catch(p),r);return m(y)?h(y,r,n):y},b=(e,t,n)=>{let r=(t,n)=>{if(t===void 0)return n;let r=Math.trunc(Number.isFinite(t)?t:t>0?e:-e);return r<0?Math.max(e+r,0):Math.min(r,e)},i=r(t,0);return{from:i,to:Math.max(i,r(n,e))}},x=async(e,n,r={})=>{if(typeof e!=`string`)throw l(`badUrl`);if(typeof n!=`string`)throw l(`badKey`);let{signal:i}=r;i?.throwIfAborted();let a=async()=>{let r=await f();if(!r)throw l(`unavailable`);let a=t.c()?.epoch,o=await _(Promise.resolve(r.get(e,n,i?{signal:i}:void 0)).catch(p),i);return m(o)?h(o,i):{handle:o,epoch:a}},o=await a(),s=async()=>{let e=t.c()?.epoch;return o.epoch!==void 0&&e!==void 0&&e!==o.epoch&&(o=await a()),o.handle},c=(e,t)=>{let n;return new ReadableStream({pull:async r=>{try{if(!n){let r=await s(),i=await Promise.resolve(r.read(e,t)).catch(p);if(m(i))return h(i);n=i.getReader()}let{value:i,done:a}=await n.read();a?r.close():r.enqueue(i)}catch(e){throw d(e)}},cancel:e=>n?.cancel(e)},{highWaterMark:0})},u=(e,t)=>({size:t-e,stream:()=>c(e,t),arrayBuffer:async()=>{let n=new Uint8Array(t-e),r=c(e,t).getReader(),i=0;for(;;){let{value:e,done:t}=await r.read();if(t)break;n.set(e,i),i+=e.length}return n.buffer},slice:(n,r)=>{let i=b(t-e,n,r);return u(e+i.from,e+i.to)}});return u(0,o.handle.size)},S=async(e={})=>{let t=i.s(),n=await f();if(!n)throw l(`unavailable`);let r=await g(t),{limit:a,cursor:o}=e,s=await Promise.resolve(n.list({accountPin:r,...a===void 0?{}:{limit:a},...o===void 0?{}:{cursor:o}})).catch(p);return m(s)?h(s,void 0,t):s},C=async e=>{let t=i.s();if(typeof e!=`string`)throw l(`badUrl`);let n=await f();if(!n)throw l(`unavailable`);let r=await g(t),a=await Promise.resolve(n.delete(e,{accountPin:r})).catch(p);m(a)&&h(a,void 0,t)};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return v}});
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { c as t, l as n, s as r } from "./api-DRglK7ft.js";
2
+ import { c as t, l as n, s as r } from "./api-DeGR_tzF.js";
3
3
  import { STORAGE_REFUSALS as i } from "./contract.js";
4
- import { r as a } from "./account-generation-BKHNe-jL.js";
5
- import { l as o, m as s, s as c } from "./account-storage-BmCVutNL.js";
4
+ import { r as a } from "./account-generation-BElgcQwo.js";
5
+ import { l as o, m as s, s as c } from "./account-storage-C7Lyae5Q.js";
6
6
  // src/storage.ts
7
7
  var l = /* @__PURE__ */ e({
8
8
  available: () => S,
package/storage.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./storage-BCjYihUO.cjs");exports.available=e.t,exports.delete=e.a,exports.get=e.n,exports.list=e.r,exports.put=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./storage-CoEDsbk2.cjs");exports.available=e.t,exports.delete=e.a,exports.get=e.n,exports.list=e.r,exports.put=e.i;
package/storage.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CJk3vE9P.js";
2
- import { a as list, i as get, n as StoredBlob, o as put, r as available, s as remove, t as StorageError } from "./storage-CidJUc0x.js";
1
+ import { It as StoredObject, Lt as StoredPage, Mt as StoragePutOptions, jt as StorageProgress, kt as StorageErrorCode } from "./contract-CDdIE_Es.js";
2
+ import { a as list, i as get, n as StoredBlob, o as put, r as available, s as remove, t as StorageError } from "./storage-C38adB-z.js";
3
3
  export { StorageError, type StorageErrorCode, type StorageProgress, type StoragePutOptions, StoredBlob, type StoredObject, type StoredPage, available, remove as delete, get, list, put };
package/storage.js CHANGED
@@ -1 +1 @@
1
- export { t as available, a as delete, n as get, r as list, i as put } from "./storage-BhfImh_2.js";
1
+ export { t as available, a as delete, n as get, r as list, i as put } from "./storage-sCdMPRVY.js";
package/api-DrvhPN56.cjs DELETED
@@ -1,3 +0,0 @@
1
- const e=require("./broker-frame-CF4-yXtj.cjs");let t=require("osra");var n=1e4,r=16,i=e=>{let t;try{t=e.contentWindow}catch{return!0}if(!t)return!0;try{let e=t.location.href;return e!==``&&e!==`about:blank`}catch{return!0}},a=(e,t=n)=>new Promise(n=>{if(i(e))return n();let a=()=>{clearInterval(o),clearTimeout(s),e.removeEventListener(`load`,a),n()},o=setInterval(()=>{i(e)&&a()},r),s=setTimeout(a,t);e.addEventListener(`load`,a)}),o=5e3,s=9e4,c=(e,t,r)=>{let a=1,c,l=e.ownerDocument.defaultView,u=()=>{clearTimeout(c),l?.removeEventListener(`message`,m),e.removeEventListener(`load`,p)},d=()=>{if(e.isConnected){if(a>=4)return u(),console.error(`FKN @fkn/lib: ${t} did not load in ${a} tries; reload the page`);a+=1,e.contentWindow?.location.replace(t),f(s)}},f=e=>{clearTimeout(c),c=setTimeout(d,e)},p=()=>f(o),m=t=>{t.source===e.contentWindow&&t.origin===r&&u()};if(l?.addEventListener(`message`,m),e.addEventListener(`load`,p),i(e))return f(o);c=setTimeout(()=>i(e)?f(8e4):d(),n)},l=32,u=8,d=120,f=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),p=typeof CSS<`u`&&CSS.supports(`clip-path`,`polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)`),m=`light dark`,h=e=>{let t=e.style;t.setProperty(`display`,`block`,`important`),t.setProperty(`position`,`fixed`,`important`),t.setProperty(`top`,`0`,`important`),t.setProperty(`left`,`0`,`important`),t.setProperty(`width`,`100%`,`important`),t.setProperty(`height`,`100%`,`important`),t.setProperty(`border`,`none`,`important`),t.setProperty(`padding`,`0`,`important`),t.setProperty(`box-sizing`,`border-box`,`important`),t.setProperty(`clip-path`,`inset(100%)`,`important`),t.setProperty(`background`,`transparent`),t.setProperty(`color-scheme`,m),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},g=({x:e,y:t,width:n,height:r,radius:i})=>{if(!i)return`M${e} ${t}h${n}v${r}h${-n}Z`;let a=Math.min(n,r)/2,[o,s,c,l]=i.map(e=>Math.max(0,Math.min(e,a)));return`M${e+o} ${t}h${n-o-s}a${s} ${s} 0 0 1 ${s} ${s}v${r-s-c}a${c} ${c} 0 0 1 ${-c} ${c}h${-(n-c-l)}a${l} ${l} 0 0 1 ${-l} ${-l}v${-(r-l-o)}a${o} ${o} 0 0 1 ${o} ${-o}Z`},ee=()=>f&&p,_=({x:e,y:t,width:n,height:r})=>[[e,t],[e+n,t],[e+n,t+r],[e,t+r],[e,t]],te=e=>{let t=e[0];if(!t)return[];let n=_(t)[0],r=[];return e.forEach((t,i)=>{r.push(..._(t)),i>0&&i<e.length-1&&r.push(n)}),r},ne=e=>`polygon(nonzero, ${te(e).map(([e,t])=>`${e}px ${t}px`).join(`, `)})`,re=({x:e,y:t,width:n,height:r,radius:i},a)=>{let o=`${t}px ${a.width-e-n}px ${a.height-t-r}px ${e}px`;return i?`inset(${o} round ${i.map(e=>`${e}px`).join(` `)})`:`inset(${o})`},ie=(e,t,n)=>{if(t)return`none`;if(e.length===0)return`inset(100%)`;let r=e.length===1?e[0]:void 0;return r?re(r,n):p&&e.length<=5&&!e.some(e=>e.radius)?ne(e):`path('${e.map(g).join(``)}')`},ae=e=>{if(e.length<2)return null;let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y));return{x:t,y:n,width:Math.max(...e.map(e=>e.x+e.width))-t,height:Math.max(...e.map(e=>e.y+e.height))-n}},oe=(e,t,n)=>t>=e.x&&t<e.x+e.width&&n>=e.y&&n<e.y+e.height,se=16,v=(e,t,n)=>t===1?e*se:t===2?e*n:e,ce=(e,t,n)=>{let r=getComputedStyle(e);return n!==0&&/auto|scroll/.test(r.overflowY)&&e.scrollHeight>e.clientHeight?!0:t!==0&&/auto|scroll/.test(r.overflowX)&&e.scrollWidth>e.clientWidth},le=(e,t,n)=>{for(let r=e;r;r=r.parentElement)if(ce(r,t,n))return r;return document.scrollingElement},y=null,b=null,x=e=>({width:e.offsetWidth||window.innerWidth,height:e.offsetHeight||window.innerHeight}),S=e=>{if(!b||!y||!oe(b,e.clientX,e.clientY))return;let t=document.elementFromPoint(e.clientX,e.clientY);if(!t||t===y)return;let n=v(e.deltaX,e.deltaMode,window.innerWidth),r=v(e.deltaY,e.deltaMode,window.innerHeight),i=le(t,n,r);i&&(i.scrollBy({left:n,top:r,behavior:`instant`}),e.cancelable&&e.preventDefault())},ue=e=>{let t=b!==null;b=e,t!==(e!==null)&&(e?window.addEventListener(`wheel`,S,{capture:!0,passive:!1}):window.removeEventListener(`wheel`,S,{capture:!0}))},C=0,de=e=>{if(e===C)return;C=e;let t=document.documentElement.style;e>0?(t.setProperty(`margin-top`,`${e}px`,`important`),t.setProperty(`--fkn-inset-top`,`${e}px`)):(t.removeProperty(`margin-top`),t.removeProperty(`--fkn-inset-top`))},w=(e,{modal:t,rects:n,inset:r},i)=>{if(de(r),!f){let r=t||n.length>0;e.style.setProperty(`pointer-events`,r?`auto`:`none`,`important`),e.style.setProperty(`visibility`,r?`visible`:`hidden`,`important`);return}let a=ie(n,t,i),o=a===`none`||CSS.supports(`clip-path`,a)?a:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`),ue(t||o!==a?null:ae(n))},fe=e=>{if(typeof e!=`object`||!e)return 0;let{top:t}=e;return typeof t!=`number`||!Number.isFinite(t)||t<=0?0:Math.min(Math.round(t),d)},pe=e=>{if(Array.isArray(e)&&e.length===4&&e.every(e=>typeof e==`number`&&Number.isFinite(e)&&e>=0))return e.some(e=>e>0)?e:void 0},me=(e,t)=>{if(typeof e!=`object`||!e)return null;let{x:n,y:r,width:i,height:a}=e;if(![n,r,i,a].every(e=>typeof e==`number`&&Number.isFinite(e)))return null;let o=t.width,s=t.height,c=Math.max(0,Math.min(Math.round(n),o)),l=Math.max(0,Math.min(Math.round(r),s)),u=Math.max(c,Math.min(Math.round(n+i),o)),d=Math.max(l,Math.min(Math.round(r+a),s)),f=pe(e.radius);return{x:c,y:l,width:u-c,height:d-l,...f?{radius:f}:{}}},T={"not-rendered":`this page is not painting it at all, so it or an ancestor is display:none, or the frame was moved out of the layout`,clipped:`it is clipped away or positioned outside the viewport`,"not-shown":`it is rendered but would not be seen, so either something is drawn over it, or it or an ancestor has opacity below 1, visibility:hidden, or a filter`},E=e=>Array.isArray(e)?e.slice(0,u).flatMap(e=>{if(typeof e!=`object`||!e)return[];let{kind:t,cause:n,level:r}=e;return typeof t!=`string`||t.length>40||typeof n!=`string`||!(n in T)||r!==`full`&&r!==`liveness`?[]:[{kind:t,cause:n,level:r}]}):[],D=new Set,he=e=>{for(let{kind:t,cause:n,level:r}of e)D.has(t)||(D.add(t),console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${T[n]}. Nobody using this page can see or answer it.
2
- @fkn/lib draws its UI inside <iframe title="FKN"> and sets display, position, top, left, width, height, border, padding, box-sizing, clip-path and z-index on that element. Leave those as they are, then check for an ancestor with opacity, visibility, display or a clipping transform, and for an element stacked above it.`+(r===`liveness`?`
3
- This browser reports limited detail, so the cause above is a best guess.`:``)))},O=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=e,r=(Array.isArray(n.rects)?n.rects.slice(0,l):[]).map(e=>me(e,t)).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:n.modal===!0,rects:r,hidden:E(n.hidden),inset:fe(n.inset)}},ge=()=>y!==null,k=null,A=null,_e=()=>{if(!y||k===null)return;let e=x(y),t=O(k,e);t&&w(y,t,e)},ve=e=>{typeof ResizeObserver<`u`&&(A??=new ResizeObserver(_e),A.disconnect(),A.observe(e))},ye=e=>{h(e),w(e,{modal:!1,rects:[],hidden:[],inset:0},x(e)),y=e,ve(e)},be=e=>{if(!y)return;let t=x(y),n=O(e,t);n&&(k=e,w(y,n,t),he(n.hidden))},j=`https://fkn.app`,M=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,N=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,P=e.n(N),xe=`fkn-api-port`,Se=`fkn-api-port-ack`,Ce=2e3,F=()=>{if(!M||typeof window>`u`||window.parent===window)return Promise.resolve(void 0);let e;try{e=window.parent}catch{return Promise.resolve(void 0)}let t=new MessageChannel;return new Promise(n=>{let r=e=>{if(clearTimeout(a),t.port1.removeEventListener(`message`,i),!e)try{t.port1.close()}catch{}n(e)},i=e=>{e.data?.type===Se&&r(t.port1)},a=setTimeout(()=>r(void 0),Ce);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:xe},j,[t.port2])}catch{r(void 0)}})},I,we=()=>{if(I||!M)return I;let t=M.querySelector(`iframe[src="${P}"]`);if(t)I=t;else{let t=M.createElement(`iframe`);t.setAttribute(`allow`,e.i(N)),t.src=P,M.body.appendChild(t),I=t}return c(I,P,j),ye(I),I},L=(async()=>{if(!M)return;let e=await F();if(e)return{receive:e,emit:e};let t=we();if(!t)return;await a(t);let n=t.contentWindow;return n?{receive:window,emit:n}:void 0})(),Te=(e,{boundRetired:t=e=>e}={})=>{let n,r=0,i=!1,a=()=>{},o=()=>new Promise(e=>{a=e}),s=o(),c=s,l=new Set,u=new Set,d=0,f=0,p=()=>{let e=[...u];u.clear();let t=Error(`FKN: the broker was replaced while this call was pending; retry it`);for(let n of e)try{n(t)}catch{}};(async()=>{for await(let t of e){let e=++r;n={remote:t,epoch:e};let i=a;s=o(),i(t),p();for(let n of[...l])try{n(t,e)}catch{}}})().catch(()=>{});let m=async(e,r)=>{let a=n?.remote??await(i?t(s):s);for(let t of e.slice(0,-1))a=a[t];let o=a[e[e.length-1]??``];d=Date.now(),f+=1;let c=()=>{},l=new Promise((e,t)=>{c=t});u.add(c);try{return await Promise.race([Promise.resolve(o.apply(a,r)),l])}finally{--f,u.delete(c),d=Date.now()}},h=new Map,g=e=>{let t=e.join(`\0`),r=h.get(t);if(r)return r;let i=new Proxy(function(){},{get:(t,r)=>{if(typeof r!=`string`||r===`then`)return;let i=n;if(i){let t=i.remote;for(let n of e)t=t?.[n];if(t?.[r]===void 0)return}return g([...e,r])},apply:(t,n,r)=>m(e,r)});return h.set(t,i),i};return{facade:g([]),first:c.then(()=>{}),current:()=>n,onEpoch:e=>{if(l.add(e),n)try{e(n.remote,n.epoch)}catch{}return()=>{l.delete(e)}},lastCall:()=>d,inFlight:()=>f,routable:()=>n?Promise.resolve():s.then(()=>{}),retire:()=>{i=!0,n=void 0,p()}}},R=!1,z=new Set,B=()=>R,Ee=()=>{if(!R){R=!0;for(let e of[...z])try{e()}catch{}z.clear()}},V=e=>{R?e():z.add(e)},De=typeof window<`u`||typeof self<`u`,H=async()=>{if(typeof window<`u`)return L;if(typeof self<`u`)return{receive:self,emit:self}},U=`fkn-api`,Oe=`fkn-api-window`,ke={async*[Symbol.asyncIterator](){let e=await H();if(!e)await new Promise(()=>{});else{if(!B()){let n=new AbortController;V(()=>n.abort());for await(let r of(0,t.expose)({},{key:U,transport:e,unregisterSignal:n.signal})){if(n.signal.aborted)break;yield r}}yield*(0,t.expose)({},{key:Oe,transport:e})}}},W=!1,G=H().then(e=>new Promise(n=>{if(!e)return;let{receive:r}=e,i=e=>{(0,t.checkOsraMessageKey)(e.data,U)&&(r.removeEventListener(`message`,i),W=!0,n())};r.addEventListener(`message`,i)})),K=Te(ke,{boundRetired:e=>Promise.race([e,G.then(()=>Q(e,()=>new Z))])});V(()=>K.retire());var q=Promise.race([K.first,new Promise(e=>V(e))]).then(()=>K.facade),J=8e3,Ae=1e3,Y=!1,X=class extends Error{constructor(e,t){super(`@fkn/lib: no broker connection within ${t}ms, so ${e} could not be requested`),this.name=`BrokerUnreachableError`}},Z=class extends Error{constructor(){super(`FKN @fkn/lib: this page relays its FKN channel to a worker, and the FKN page it reached predates a channel of the page's own; reload`),this.name=`OwnChannelUnavailableError`}},Q=(e,t)=>{let n=Y?Ae:J;return Promise.race([e,new Promise((e,r)=>setTimeout(()=>{Y=!0,r(t(n))},n))])},je=e=>B()?Q(K.routable().then(()=>K.facade),t=>W?new Z:new X(e,t)):Q(q,t=>new X(e,t));V(()=>{G.then(()=>{let e=setTimeout(()=>console.error(new Z),J);K.routable().then(()=>clearTimeout(e))})});var $=K.onEpoch,Me=K.current,Ne=K.lastCall,Pe=K.inFlight;$(e=>{ge()&&e.overlay.setHost(be,{exactClips:ee(),colorScheme:m}).catch(()=>{})}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return $}});