@fkn/lib 0.9.54 → 0.9.56

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 (68) hide show
  1. package/{account-generation-CTB1J33G.js → account-generation-D3jlXBbM.js} +1 -1
  2. package/{account-generation-DOuApHq5.cjs → account-generation-DkrSMafa.cjs} +1 -1
  3. package/{account-storage-D1RiskV6.js → account-storage-BBL440_m.js} +2 -2
  4. package/{account-storage-CL0wLuQw.cjs → account-storage-C1VL6fpb.cjs} +1 -1
  5. package/account.cjs +1 -1
  6. package/account.d.ts +1 -1
  7. package/account.js +2 -2
  8. package/{api-C-VvG5P-.d.ts → api-BSpQkgnM.d.ts} +361 -25
  9. package/api-BmaUJUUp.cjs +3 -0
  10. package/{api-BYtMzj8u.js → api-DEfkbHGB.js} +93 -81
  11. package/api.cjs +1 -1
  12. package/api.d.ts +2 -2
  13. package/api.js +1 -1
  14. package/cloud/dns.d.ts +1 -1
  15. package/cloud/fetch.cjs +1 -1
  16. package/cloud/fetch.d.ts +1 -1
  17. package/cloud/fetch.js +1 -1
  18. package/cloud/fs.cjs +1 -1
  19. package/cloud/fs.js +1 -1
  20. package/cloud/net.d.ts +1 -1
  21. package/{cloud-S8hQywqV.d.ts → cloud-BslRIoKs.d.ts} +2 -2
  22. package/{cloud-CI6WMBPa.cjs → cloud-C_EPPfe_.cjs} +1 -1
  23. package/{cloud-8sJ1Sg8n.js → cloud-DTpFBbBH.js} +2 -2
  24. package/cloud.cjs +1 -1
  25. package/cloud.d.ts +3 -3
  26. package/cloud.js +2 -2
  27. package/{contract-CMQOic3K.d.ts → contract-DFycgFJK.d.ts} +131 -8
  28. package/contract.d.ts +2 -2
  29. package/dgram.cjs +1 -1
  30. package/dgram.d.ts +2 -2
  31. package/dgram.js +1 -1
  32. package/dns.cjs +1 -1
  33. package/dns.d.ts +1 -1
  34. package/dns.js +1 -1
  35. package/{extension-BmqjgSIQ.js → extension-C13d41tq.js} +2 -2
  36. package/{extension-BXI3MVXw.cjs → extension-DA_Fx3Lx.cjs} +1 -1
  37. package/extension.cjs +1 -1
  38. package/extension.js +1 -1
  39. package/fs/promises.cjs +1 -1
  40. package/fs/promises.js +1 -1
  41. package/{fs-CPU00CI3.cjs → fs-C7ByWYF9.cjs} +1 -1
  42. package/{fs-ohcMNiu2.js → fs-gryDP9qw.js} +2 -2
  43. package/fs.cjs +1 -1
  44. package/fs.js +2 -2
  45. package/http.d.ts +1 -1
  46. package/index.cjs +1 -1
  47. package/index.d.ts +2 -2
  48. package/index.js +4 -4
  49. package/{net-B8YQuB9E.d.ts → net-eEjhJ0AE.d.ts} +2 -2
  50. package/net.cjs +1 -1
  51. package/net.d.ts +1 -1
  52. package/net.js +1 -1
  53. package/package.json +1 -1
  54. package/packages.cjs +1 -1
  55. package/packages.d.ts +1 -1
  56. package/packages.js +1 -1
  57. package/{proxy-ClDBa5il.d.ts → proxy-8hIHeEHD.d.ts} +2 -2
  58. package/{proxy-CL8j00ao.cjs → proxy-Blzm-Dc1.cjs} +1 -1
  59. package/{proxy-vAsYHMIa.js → proxy-C2HY5Ybc.js} +1 -1
  60. package/react.cjs +1 -1
  61. package/react.js +1 -1
  62. package/rooms.cjs +1 -1
  63. package/rooms.d.ts +43 -9
  64. package/rooms.js +154 -92
  65. package/storage.cjs +1 -1
  66. package/storage.d.ts +1 -1
  67. package/storage.js +3 -3
  68. package/api-Csb5b8dE.cjs +0 -3
package/rooms.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { l as t, s as n, u as r } from "./api-BYtMzj8u.js";
2
+ import { l as t, s as n, u as r } from "./api-DEfkbHGB.js";
3
3
  import { t as i } from "./busy-DsMWrSzc.js";
4
4
  import { ROOM_TEMPORARY_MS as a } from "./contract.js";
5
5
  //#region src/rooms.ts
6
6
  var o = /* @__PURE__ */ e({
7
- available: () => y,
8
- create: () => S,
9
- join: () => C,
10
- open: () => x
7
+ available: () => w,
8
+ create: () => D,
9
+ join: () => O,
10
+ open: () => E
11
11
  }), s = {
12
12
  wrongKey: "rooms: wrong room key",
13
13
  inviteNoKey: "rooms: the invite carries no key",
@@ -43,6 +43,14 @@ var o = /* @__PURE__ */ e({
43
43
  temporaryUnavailable: "rooms: temporary claims are not available",
44
44
  mailboxUnavailable: "rooms: the mailbox switch is not available",
45
45
  guestUnavailable: "rooms: guest joins are not available",
46
+ schemasUnavailable: "rooms: room schemas are not available",
47
+ badSchema: "rooms: the schema is not one a room can take",
48
+ newerSchema: "rooms: the room holds a newer schema",
49
+ noSchema: "rooms: the room has no schema",
50
+ misfit: "rooms: the message does not fit the room's schema",
51
+ ownerSends: "rooms: only the owner sends this type",
52
+ accountSends: "rooms: sending this needs an account",
53
+ perAccount: "rooms: you have as many of these here as the room allows",
46
54
  tooFast: "rooms: sending too fast",
47
55
  tooLarge: "rooms: the message is too large",
48
56
  unavailable: "rooms: rooms are unavailable",
@@ -55,95 +63,131 @@ var o = /* @__PURE__ */ e({
55
63
  send: !0,
56
64
  receive: !0,
57
65
  maxMessageBytes: 262144
58
- }, d = () => ({
66
+ }, d = 2048, f = () => ({
59
67
  messages: 0,
60
68
  bytes: 0,
61
69
  cap: 5e8,
62
70
  archived: !1
63
- }), f = async () => {
71
+ }), p = async () => {
64
72
  if (!t) return;
65
73
  let e = (await n("a room").catch(() => void 0))?.rooms;
66
74
  return typeof e?.open == "function" ? e : void 0;
67
- }, p = () => {
75
+ }, m = () => {
68
76
  throw c("unavailable", s.unavailable);
69
- }, m = (e) => e === "blocked" ? "blocked" : e === "not-found" ? "ended" : "unavailable", h = (e) => {
77
+ }, h = (e) => e === "blocked" ? "blocked" : e === "not-found" ? "ended" : "unavailable", g = (e) => {
70
78
  if (e !== void 0 && e !== !1) return e === !0 ? a.default : typeof e != "number" || !Number.isInteger(e) ? null : e >= a.min && e <= a.max ? e : null;
71
- }, g = (e, t) => {
79
+ }, _ = (e, t) => {
72
80
  let n = t ? e?.guest : e;
73
81
  return typeof n?.join == "function" ? n : void 0;
74
- }, _ = (e) => {
82
+ }, v = (e) => {
83
+ let t;
84
+ try {
85
+ t = JSON.stringify(e);
86
+ } catch {}
87
+ let n = t === void 0 ? void 0 : JSON.parse(t), r = typeof n == "object" && !!n && !Array.isArray(n) && typeof n.type == "string";
88
+ if (t === void 0 || !r || t.length > d) throw c("invalid", s.misfit);
89
+ return t;
90
+ }, y = (e) => {
91
+ let t;
92
+ try {
93
+ t = JSON.parse(JSON.stringify(e));
94
+ } catch {}
95
+ if (typeof t != "object" || !t || Array.isArray(t)) throw c("invalid", s.badSchema);
96
+ return t;
97
+ }, b = (e) => e?.schema === void 0 ? e : {
98
+ ...e,
99
+ schema: y(e.schema)
100
+ }, x = (e) => {
101
+ if (e.schemas !== !0) throw c("unavailable", s.schemasUnavailable);
102
+ return e;
103
+ }, S = (e) => {
75
104
  let t = e?.guest;
76
105
  if (t !== void 0 && typeof t != "boolean") throw c("invalid", s.malformed);
77
106
  return t === !0;
78
- }, v = async (e, t) => {
79
- let n = e.invite, a = e, o = 0, f = e.self, p = e.owner, _ = e.claimed, v = e.mailbox, y = 0, b = await e.defaults().catch(() => u), x = !1, S = /* @__PURE__ */ new Set(), C = /* @__PURE__ */ new Set(), w = i("room"), T = () => {}, E = () => {}, D = new Promise((e) => {
80
- E = e;
81
- }), O = (e) => {
82
- let t = [...C];
83
- C.clear();
107
+ }, C = async (e, t) => {
108
+ let n = e.invite, a = e, o = 0, d = e.self, p = e.owner, m = e.claimed, b = e.mailbox, S = 0, C = await e.defaults().catch(() => u), w = e.schemas === !0 ? await Promise.resolve(e.schema()).catch(() => null) : null, T = 0, E = !1, D = /* @__PURE__ */ new Set(), O = /* @__PURE__ */ new Set(), k = i("room"), A = () => {}, j = () => {}, M = new Promise((e) => {
109
+ j = e;
110
+ }), N = (e) => {
111
+ let t = [...O];
112
+ O.clear();
84
113
  for (let n of t) try {
85
114
  n(e);
86
115
  } catch {}
87
- }, k = (e) => {
88
- x || (x = !0, T(), S.clear(), w(), O(c("closed", s.ended)), E({ reason: e }));
89
- }, A = (e) => {
90
- if (x) return;
116
+ }, P = (e) => {
117
+ E || (E = !0, A(), D.clear(), k(), N(c("closed", s.ended)), j({ reason: e }));
118
+ }, F = (e) => {
119
+ if (E) return;
91
120
  let t = e;
92
- if (t.type === "defaults" && (b = t.defaults), t.type === "permissions" && t.id === f.id && (f = {
93
- id: f.id,
121
+ if (t.type === "defaults" && (C = t.defaults), t.type === "schema" && (T += 1, w = t.schema), t.type === "message" || t.type === "edited") {
122
+ let e = {
123
+ ...t.message,
124
+ envelope: t.message.envelope ?? null
125
+ };
126
+ t = t.type === "message" ? {
127
+ ...t,
128
+ message: e
129
+ } : {
130
+ type: "edited",
131
+ message: e
132
+ };
133
+ }
134
+ if (t.type === "permissions" && t.id === d.id && (d = {
135
+ id: d.id,
94
136
  permissions: t.permissions,
95
137
  maxMessageBytes: t.maxMessageBytes
96
138
  }), t.type === "claim") {
97
- y += 1;
139
+ S += 1;
98
140
  let e = t.claimed && t.mailbox !== !1;
99
141
  t = {
100
142
  type: "claim",
101
143
  claimed: t.claimed,
102
144
  owner: t.owner,
103
145
  mailbox: e
104
- }, _ = t.claimed, p = t.owner, v = e ? d() : null;
146
+ }, m = t.claimed, p = t.owner, b = e ? f() : null;
105
147
  }
106
- for (let e of [...S]) try {
148
+ for (let e of [...D]) try {
107
149
  e(t);
108
150
  } catch {}
109
- }, j = (e, t) => {
110
- Promise.resolve(e.on(A)).catch(() => {}), Promise.resolve(e.closed).then((e) => {
111
- t === o && k(e.reason);
151
+ }, I = (e, t) => {
152
+ Promise.resolve(e.on(F)).catch(() => {}), Promise.resolve(e.closed).then((e) => {
153
+ t === o && P(e.reason);
112
154
  }, () => {});
113
- }, M = async (e, r) => {
114
- let i = g(e, t);
115
- if (!i) return k("unavailable");
155
+ }, L = async (e, r) => {
156
+ let i = _(e, t);
157
+ if (!i) return P("unavailable");
116
158
  let s = await i.join(n).catch(() => void 0);
117
- if (x || r !== o) return;
118
- if (!s) return k("unavailable");
119
- if ("error" in s) return k(m(s.error));
120
- if (s.self.id !== f.id) return Promise.resolve(s.leave()).catch(() => {}), k("unavailable");
121
- a = s, f = s.self, p = s.owner, _ = s.claimed, v = s.mailbox, j(s, r);
159
+ if (E || r !== o) return;
160
+ if (!s) return P("unavailable");
161
+ if ("error" in s) return P(h(s.error));
162
+ if (s.self.id !== d.id) return Promise.resolve(s.leave()).catch(() => {}), P("unavailable");
163
+ a = s, d = s.self, p = s.owner, m = s.claimed, b = s.mailbox, I(s, r);
122
164
  let c = await s.defaults().catch(() => void 0);
123
- c && !x && r === o && (b = c);
165
+ if (c && !E && r === o && (C = c), s.schemas !== !0) return;
166
+ let l = await Promise.resolve(s.schema()).catch(() => void 0);
167
+ l !== void 0 && !E && r === o && (w = l);
124
168
  };
125
- T = r((e, t) => {
169
+ A = r((e, t) => {
126
170
  let n = o;
127
- o = t, !(x || n === 0 || n === t) && (O(c("unavailable", s.unavailable)), M(e.rooms, t));
128
- }), j(e, o);
129
- let N = async (e) => {
130
- if (x) throw c("closed", s.ended);
171
+ o = t, !(E || n === 0 || n === t) && (N(c("unavailable", s.unavailable)), L(e.rooms, t));
172
+ }), I(e, o);
173
+ let R = async (e) => {
174
+ if (E) throw c("closed", s.ended);
131
175
  let t = () => {}, n = new Promise((e, n) => {
132
176
  t = n;
133
177
  });
134
- C.add(t);
178
+ O.add(t);
135
179
  try {
136
180
  return await Promise.race([Promise.resolve(e(a)), n]);
137
181
  } catch (e) {
138
182
  throw l(e) ? e : c("unavailable", s.unavailable);
139
183
  } finally {
140
- C.delete(t);
184
+ O.delete(t);
141
185
  }
142
- }, P = async (e) => {
143
- let t = await N(e);
186
+ }, z = async (e) => {
187
+ let t = await R(e);
144
188
  if ("error" in t) throw c(t.error, t.message);
145
- }, F = async (e) => {
146
- let t = await N(e);
189
+ }, B = async (e) => {
190
+ let t = await R(e);
147
191
  if (typeof t == "object" && t && "error" in t) throw c(t.error, t.message);
148
192
  return t;
149
193
  };
@@ -153,34 +197,47 @@ var o = /* @__PURE__ */ e({
153
197
  key: e.key,
154
198
  invite: n,
155
199
  get self() {
156
- return f;
200
+ return d;
157
201
  },
158
202
  get owner() {
159
203
  return p;
160
204
  },
161
205
  get claimed() {
162
- return _;
206
+ return m;
163
207
  },
164
208
  get mailbox() {
165
- return v;
209
+ return b;
210
+ },
211
+ defaults: () => C,
212
+ members: () => R((e) => e.members()),
213
+ schema: () => w,
214
+ send: async (e, t) => {
215
+ if (t === void 0) return z((t) => t.send(e));
216
+ let n = v(t);
217
+ return z((t) => x(t).send(e, n));
218
+ },
219
+ edit: async (e, t, n) => {
220
+ if (n === void 0) return z((n) => n.edit(e, t));
221
+ let r = v(n);
222
+ return z((n) => x(n).edit(e, t, r));
223
+ },
224
+ setSchema: async (e) => {
225
+ let t = y(e), n = T;
226
+ await z((e) => x(e).setSchema(t)), T === n && (w = t);
166
227
  },
167
- defaults: () => b,
168
- members: () => N((e) => e.members()),
169
- send: (e) => P((t) => t.send(e)),
170
- edit: (e, t) => P((n) => n.edit(e, t)),
171
- delete: (e, t) => P((n) => n.delete(e, t)),
172
- backlog: (e, t) => F((n) => n.backlog(e, t)),
173
- setDefault: (e, t) => P((n) => n.setDefault(e, t)),
174
- limit: (e, t) => P((n) => n.limit(e, t)),
175
- grant: (e, t) => P((n) => n.grant(e, t)),
176
- revoke: (e, t) => P((n) => n.revoke(e, t)),
177
- remove: (e) => P((t) => t.remove(e)),
178
- block: (e) => P((t) => t.block(e)),
179
- unblock: (e) => P((t) => t.unblock(e)),
228
+ delete: (e, t) => z((n) => n.delete(e, t)),
229
+ backlog: (e, t) => B((n) => n.backlog(e, t)),
230
+ setDefault: (e, t) => z((n) => n.setDefault(e, t)),
231
+ limit: (e, t) => z((n) => n.limit(e, t)),
232
+ grant: (e, t) => z((n) => n.grant(e, t)),
233
+ revoke: (e, t) => z((n) => n.revoke(e, t)),
234
+ remove: (e) => z((t) => t.remove(e)),
235
+ block: (e) => z((t) => t.block(e)),
236
+ unblock: (e) => z((t) => t.unblock(e)),
180
237
  claim: async (e) => {
181
238
  let t = e?.description;
182
239
  if (t !== void 0 && typeof t != "string") throw c("invalid", s.badDescription);
183
- let n = h(e?.temporary);
240
+ let n = g(e?.temporary);
184
241
  if (n === null) throw c("invalid", s.badTemporary);
185
242
  let r = e?.mailbox;
186
243
  if (r !== void 0 && typeof r != "boolean") throw c("invalid", s.malformed);
@@ -189,7 +246,7 @@ var o = /* @__PURE__ */ e({
189
246
  ...n === void 0 ? {} : { temporary: n },
190
247
  ...r === void 0 ? {} : { mailbox: r }
191
248
  };
192
- return Object.keys(i).length === 0 ? P((e) => e.claim()) : P((e) => {
249
+ return Object.keys(i).length === 0 ? z((e) => e.claim()) : z((e) => {
193
250
  if (n !== void 0 && e.temporaryClaims !== !0) throw c("unavailable", s.temporaryUnavailable);
194
251
  if (r === !1 && e.mailboxSwitch !== !0) throw c("unavailable", s.mailboxUnavailable);
195
252
  return e.claim(i);
@@ -197,43 +254,48 @@ var o = /* @__PURE__ */ e({
197
254
  },
198
255
  setMailbox: async (e) => {
199
256
  if (typeof e != "boolean") throw c("invalid", s.malformed);
200
- let t = y;
201
- await P((t) => {
257
+ let t = S;
258
+ await z((t) => {
202
259
  if (t.mailboxSwitch !== !0) throw c("unavailable", s.mailboxUnavailable);
203
260
  return t.setMailbox(e);
204
- }), y === t && (e ? v === null && (v = d()) : v = null);
261
+ }), S === t && (e ? b === null && (b = f()) : b = null);
205
262
  },
206
- release: () => P((e) => e.release()),
263
+ release: () => z((e) => e.release()),
207
264
  usage: async () => {
208
- let e = await F((e) => e.usage());
209
- return v = e, e;
265
+ let e = await B((e) => e.usage());
266
+ return b = e, e;
210
267
  },
211
- on: async (e) => x ? () => {} : (S.add(e), () => {
212
- S.delete(e);
268
+ on: async (e) => E ? () => {} : (D.add(e), () => {
269
+ D.delete(e);
213
270
  }),
214
271
  leave: async () => {
215
- await Promise.resolve(a.leave()).catch(() => {}), k("left");
272
+ await Promise.resolve(a.leave()).catch(() => {}), P("left");
216
273
  },
217
- closed: D
274
+ closed: M
218
275
  };
219
- }, y = async () => {
220
- let e = await f();
276
+ }, w = async () => {
277
+ let e = await p();
221
278
  return e ? e.available().catch(() => !1) : !1;
222
- }, b = async (e, t) => {
223
- let n = await f();
224
- if (!n) throw c("unavailable", s.unavailable);
225
- let r = g(n, e);
226
- if (!r) throw c("unavailable", s.guestUnavailable);
227
- let i = await t(r).catch(p);
228
- if ("error" in i) throw c(i.error, i.message);
229
- return v(i, e);
230
- }, x = async (e, t) => {
279
+ }, T = async (e, t, n) => {
280
+ let r = await p();
281
+ if (!r) throw c("unavailable", s.unavailable);
282
+ let i = _(r, e);
283
+ if (!i) throw c("unavailable", s.guestUnavailable);
284
+ let a = await n(i).catch(m);
285
+ if ("error" in a) throw c(a.error, a.message);
286
+ if (t?.schema !== void 0 && a.schemas !== !0) throw await Promise.resolve(a.leave()).catch(() => {}), c("unavailable", s.schemasUnavailable);
287
+ return C(a, e);
288
+ }, E = async (e, t) => {
231
289
  if (typeof e != "string" || e.length === 0 || e.length > 72) throw c("invalid", s.badName);
232
- return b(_(t), (n) => n.open(e, t));
233
- }, S = async (e) => b(_(e), (t) => t.create(e)), C = async (e, t) => {
290
+ let n = S(t), r = b(t);
291
+ return T(n, r, (t) => t.open(e, r));
292
+ }, D = async (e) => {
293
+ let t = S(e), n = b(e);
294
+ return T(t, n, (e) => e.create(n));
295
+ }, O = async (e, t) => {
234
296
  let n = typeof e == "string" ? e.indexOf(".") : -1;
235
297
  if (n <= 0 || n === e.length - 1) throw c("invalid", s.inviteNoKey);
236
- return b(_(t), (n) => n.join(e, t));
298
+ return T(S(t), void 0, (n) => n.join(e, t));
237
299
  };
238
300
  //#endregion
239
- export { y as available, S as create, C as join, x as open, o as t };
301
+ export { w as available, D as create, O as join, E as open, o as t };
package/storage.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-Csb5b8dE.cjs"),n=require("./contract.cjs"),r=require("./account-generation-DOuApHq5.cjs"),i=require("./account-storage-CL0wLuQw.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)};exports.available=v,exports.delete=C,exports.get=x,exports.list=S,exports.put=y,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-BIInC43l.cjs"),t=require("./api-BmaUJUUp.cjs"),n=require("./contract.cjs"),r=require("./account-generation-DkrSMafa.cjs"),i=require("./account-storage-C1VL6fpb.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)};exports.available=v,exports.delete=C,exports.get=x,exports.list=S,exports.put=y,Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return a}});
package/storage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Ct as StorageProgress, Ot as StoredObject, kt as StoredPage, wt as StoragePutOptions, xt as StorageErrorCode } from "./contract-CMQOic3K.js";
1
+ import { Dt as StorageProgress, Mt as StoredObject, Nt as StoredPage, Ot as StoragePutOptions, Tt as StorageErrorCode } from "./contract-DFycgFJK.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
  }
package/storage.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
- import { c as t, l as n, s as r } from "./api-BYtMzj8u.js";
2
+ import { c as t, l as n, s as r } from "./api-DEfkbHGB.js";
3
3
  import { STORAGE_REFUSALS as i } from "./contract.js";
4
- import { r as a } from "./account-generation-CTB1J33G.js";
5
- import { l as o, m as s, s as c } from "./account-storage-D1RiskV6.js";
4
+ import { r as a } from "./account-generation-D3jlXBbM.js";
5
+ import { l as o, m as s, s as c } from "./account-storage-BBL440_m.js";
6
6
  //#region src/storage.ts
7
7
  var l = /* @__PURE__ */ e({
8
8
  available: () => S,
package/api-Csb5b8dE.cjs DELETED
@@ -1,3 +0,0 @@
1
- let e=require("osra");var t=1e4,n=16,r=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}},i=(e,i=t)=>new Promise(t=>{if(r(e))return t();let a=()=>{clearInterval(o),clearTimeout(s),e.removeEventListener(`load`,a),t()},o=setInterval(()=>{r(e)&&a()},n),s=setTimeout(a,i);e.addEventListener(`load`,a)}),a=32,o=8,s=120,c=typeof CSS<`u`&&CSS.supports(`clip-path`,`path('M0 0H1V1H0Z')`),l=typeof CSS<`u`&&CSS.supports(`clip-path`,`polygon(nonzero, 0px 0px, 1px 0px, 1px 1px)`),u=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`,`normal`),t.setProperty(`z-index`,`2147483647`),e.setAttribute(`title`,`FKN`)},d=({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`},f=()=>c&&l,p=({x:e,y:t,width:n,height:r})=>[[e,t],[e+n,t],[e+n,t+r],[e,t+r],[e,t]],m=e=>{let t=e[0];if(!t)return[];let n=p(t)[0],r=[];return e.forEach((t,i)=>{r.push(...p(t)),i>0&&i<e.length-1&&r.push(n)}),r},h=e=>`polygon(nonzero, ${m(e).map(([e,t])=>`${e}px ${t}px`).join(`, `)})`,g=({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})`},ee=(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?g(r,n):l&&e.length<=5&&!e.some(e=>e.radius)?h(e):`path('${e.map(d).join(``)}')`},te=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}},ne=(e,t,n)=>t>=e.x&&t<e.x+e.width&&n>=e.y&&n<e.y+e.height,re=16,_=(e,t,n)=>t===1?e*re:t===2?e*n:e,ie=(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},ae=(e,t,n)=>{for(let r=e;r;r=r.parentElement)if(ie(r,t,n))return r;return document.scrollingElement},v=null,y=null,b=e=>({width:e.offsetWidth||window.innerWidth,height:e.offsetHeight||window.innerHeight}),x=e=>{if(!y||!v||!ne(y,e.clientX,e.clientY))return;let t=document.elementFromPoint(e.clientX,e.clientY);if(!t||t===v)return;let n=_(e.deltaX,e.deltaMode,window.innerWidth),r=_(e.deltaY,e.deltaMode,window.innerHeight),i=ae(t,n,r);i&&(i.scrollBy({left:n,top:r,behavior:`instant`}),e.cancelable&&e.preventDefault())},oe=e=>{let t=y!==null;y=e,t!==(e!==null)&&(e?window.addEventListener(`wheel`,x,{capture:!0,passive:!1}):window.removeEventListener(`wheel`,x,{capture:!0}))},S=0,se=e=>{if(e===S)return;S=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`))},C=(e,{modal:t,rects:n,inset:r},i)=>{if(se(r),!c){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=ee(n,t,i),o=a===`none`||CSS.supports(`clip-path`,a)?a:`inset(100%)`;e.style.setProperty(`clip-path`,o,`important`),oe(t||o!==a?null:te(n))},ce=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),s)},le=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},ue=(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=le(e.radius);return{x:c,y:l,width:u-c,height:d-l,...f?{radius:f}:{}}},w={"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`},de=e=>Array.isArray(e)?e.slice(0,o).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 w)||r!==`full`&&r!==`liveness`?[]:[{kind:t,cause:n,level:r}]}):[],T=new Set,fe=e=>{for(let{kind:t,cause:n,level:r}of e)T.has(t)||(T.add(t),console.error(`[FKN] The FKN ${JSON.stringify(t)} is not visible on this page: ${w[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.`:``)))},E=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=e,r=(Array.isArray(n.rects)?n.rects.slice(0,a):[]).map(e=>ue(e,t)).filter(e=>e!==null&&e.width>0&&e.height>0);return{modal:n.modal===!0,rects:r,hidden:de(n.hidden),inset:ce(n.inset)}},pe=()=>v!==null,D=null,O=null,me=()=>{if(!v||D===null)return;let e=b(v),t=E(D,e);t&&C(v,t,e)},he=e=>{typeof ResizeObserver<`u`&&(O??=new ResizeObserver(me),O.disconnect(),O.observe(e))},ge=e=>{u(e),C(e,{modal:!1,rects:[],hidden:[],inset:0},b(e)),v=e,he(e)},_e=e=>{if(!v)return;let t=b(v),n=E(e,t);n&&(D=e,C(v,n,t),fe(n.hidden))},ve=`fkn.app,fkn.dev,sdbx.app,horionsoftware.com,webvpn.dev,fknmail.app,clairv.app,fkn.cloudflareaccess.com,me-62e.workers.dev,62e9d4fbf21d90ebd4342e54b4babbd3.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.eu.r2.cloudflarestorage.com,62e9d4fbf21d90ebd4342e54b4babbd3.fedramp.r2.cloudflarestorage.com,pub-8a3dc68041874c7e9c9a54bde972605a.r2.dev,pub-3d97d79220b94243812e60b0e742f2c5.r2.dev,pub-f8bd4876cc3c4b4a951715da5958e49c.r2.dev,web-b3z.pages.dev,fkn-console.pages.dev,dev-dms.pages.dev,fkn-www.pages.dev,fkn-homepage.pages.dev,fkn-sandbox.pages.dev,internal-3ar.pages.dev,stub-ben.pages.dev,ripple-3t3.pages.dev,media-player-e3s.pages.dev,youtube-3c4.pages.dev,horionsoftware.pages.dev,container-ckf.pages.dev,stub-plugin.pages.dev,social-3n2.pages.dev,plugins.banou.dev`.split(`,`),k=e=>e.toLowerCase().replace(/\.+$/,``),ye=[`79.127.204.69`,`152.233.49.59`],be=e=>{let t;try{t=new URL(`http://${e.includes(`:`)&&!e.startsWith(`[`)?`[${e}]`:e}/`).hostname}catch{return}let n=/^\[(?:::ffff:|64:ff9b::)([0-9a-f]{1,4}):([0-9a-f]{1,4})\]$/.exec(t);if(n){let e=parseInt(n[1],16),t=parseInt(n[2],16);return[e>>8,e&255,t>>8,t&255].join(`.`)}return/^\d+\.\d+\.\d+\.\d+$/.test(t)?t:void 0},xe=e=>{let t=k(e);return ve.some(e=>t===e||t.endsWith(`.${e}`))},Se=e=>{if(xe(e))return!0;let t=be(k(e));return t!==void 0&&ye.includes(t)},Ce=e=>{let t=typeof e==`string`?e:e instanceof URL?e.href:e.url,n;try{n=new URL(t)}catch{return}if(Se(n.hostname))throw Error(`fetch refuses FKN platform domains (${n.hostname})`)},we=`autoplay.fullscreen.picture-in-picture.encrypted-media.screen-wake-lock.speaker-selection.captured-surface-control.camera.microphone.display-capture.geolocation.midi.usb.serial.hid.bluetooth.gamepad.keyboard-map.xr-spatial-tracking.accelerometer.gyroscope.magnetometer.ambient-light-sensor.compute-pressure.clipboard-read.clipboard-write.storage-access.window-management.local-fonts.idle-detection.web-share.sync-xhr.unload.payment.publickey-credentials-get.publickey-credentials-create.otp-credentials.identity-credentials-get.digital-credentials-get.local-network.local-network-access.loopback-network`.split(`.`),Te=()=>{try{let e=globalThis.document?.featurePolicy?.features?.();return e===void 0?void 0:new Set(e)}catch{return}},A=(e=!0,t=Te())=>[...we,...e?[`cross-origin-isolated`]:[]].filter(e=>t===void 0||t.has(e)).join(`; `),j=`https://fkn.app`,M=typeof globalThis<`u`&&globalThis.document?globalThis.document:void 0,N=typeof globalThis<`u`&&globalThis.crossOriginIsolated===!0,P=`${j}/api${N?`?coi=1`:``}`,Ee=`fkn-api-port`,De=`fkn-api-port-ack`,Oe=2e3,ke=()=>{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===De&&r(t.port1)},a=setTimeout(()=>r(void 0),Oe);t.port1.addEventListener(`message`,i),t.port1.start();try{e.postMessage({type:Ee},j,[t.port2])}catch{r(void 0)}})},F,Ae=()=>{if(F||!M)return F;let e=M.querySelector(`iframe[src="${P}"]`);if(e)F=e;else{let e=M.createElement(`iframe`);e.setAttribute(`allow`,A(N)),e.src=P,M.body.appendChild(e),F=e}return ge(F),F},I=(async()=>{if(!M)return;let e=await ke();if(e)return{receive:e,emit:e};let t=Ae();if(!t)return;await i(t);let n=t.contentWindow;return n?{receive:window,emit:n}:void 0})(),je=(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()}}},L=!1,R=new Set,z=()=>L,Me=()=>{if(!L){L=!0;for(let e of[...R])try{e()}catch{}R.clear()}},B=e=>{L?e():R.add(e)},Ne=typeof window<`u`||typeof self<`u`,V=async()=>{if(typeof window<`u`)return I;if(typeof self<`u`)return{receive:self,emit:self}},H=`fkn-api`,Pe=`fkn-api-window`,Fe={async*[Symbol.asyncIterator](){let t=await V();if(!t){await new Promise(()=>{});return}if(!z()){let n=new AbortController;B(()=>n.abort());for await(let r of(0,e.expose)({},{key:H,transport:t,unregisterSignal:n.signal})){if(n.signal.aborted)break;yield r}}yield*(0,e.expose)({},{key:Pe,transport:t})}},U=!1,W=V().then(t=>new Promise(n=>{if(!t)return;let{receive:r}=t,i=t=>{(0,e.checkOsraMessageKey)(t.data,H)&&(r.removeEventListener(`message`,i),U=!0,n())};r.addEventListener(`message`,i)})),G=je(Fe,{boundRetired:e=>Promise.race([e,W.then(()=>Q(e,()=>new Z))])});B(()=>G.retire());var K=Promise.race([G.first,new Promise(e=>B(e))]).then(()=>G.facade),q=8e3,J=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?J:q;return Promise.race([e,new Promise((e,r)=>setTimeout(()=>{Y=!0,r(t(n))},n))])},Ie=e=>z()?Q(G.routable().then(()=>G.facade),t=>U?new Z:new X(e,t)):Q(K,t=>new X(e,t));B(()=>{W.then(()=>{let e=setTimeout(()=>console.error(new Z),q);G.routable().then(()=>clearTimeout(e))})});var $=G.onEpoch,Le=G.current,Re=G.lastCall,ze=G.inFlight;$(e=>{pe()&&e.overlay.setHost(_e,{exactClips:f()}).catch(()=>{})}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return $}});