@fkn/lib 0.4.3 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,17 +1,18 @@
1
- import { d as e, f as t, g as n, i as r, l as i, m as a, p as o, r as s, t as c, u as l } from "./locator-DUbu14FW.js";
2
- import { createTypedEventTarget as u, expose as ee, relay as te } from "osra";
1
+ import { d as e, f as t, g as n, i as r, l as i, m as a, p as o, r as s, t as c, u as l } from "./locator-CzKO_aEl.js";
2
+ import { t as u } from "./connect-button-yKMuFxR9.js";
3
+ import { createTypedEventTarget as ee, expose as te, relay as ne } from "osra";
3
4
  import { Stream as d } from "stream";
4
- import { EventEmitter as ne } from "events";
5
+ import { EventEmitter as re } from "events";
5
6
  import { Address4 as f, Address6 as p } from "ip-address";
6
7
  import { Buffer as m } from "buffer";
7
8
  //#region node_modules/@mfkn/web-extension/lib/utils/extension.js
8
- var re = "FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY", ie = "fknExtension", h = u();
9
- typeof document < "u" && document.addEventListener(re, (e) => {
9
+ var ie = "FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY", ae = "fknExtension", h = ee();
10
+ typeof document < "u" && document.addEventListener(ie, (e) => {
10
11
  h.dispatchEvent(new CustomEvent("statuschange", { detail: { enabled: e.detail.enabled } }));
11
12
  });
12
- var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie] === "true", _ = null, v = (e) => {
13
+ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ae] === "true", _ = null, v = (e) => {
13
14
  _ = e;
14
- }, ae = 150, y = (e = 1e3) => new Promise((t, n) => {
15
+ }, oe = 150, y = (e = 1e3) => new Promise((t, n) => {
15
16
  if (g()) return t();
16
17
  let r, i = (e) => {
17
18
  clearTimeout(r), s.disconnect(), document.removeEventListener("readystatechange", c), e();
@@ -19,7 +20,7 @@ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie]
19
20
  if (_ && (await _().catch(() => {}), g())) return t();
20
21
  n(/* @__PURE__ */ Error("The FKN WebExtension is not installed, enabled or not exposed on this page."));
21
22
  }), o = () => {
22
- clearTimeout(r), r = setTimeout(() => g() ? i(t) : a(), ae);
23
+ clearTimeout(r), r = setTimeout(() => g() ? i(t) : a(), oe);
23
24
  }, s = new MutationObserver(() => {
24
25
  g() && i(t);
25
26
  }), c = () => {
@@ -30,39 +31,39 @@ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie]
30
31
  attributeFilter: ["data-fkn-extension"]
31
32
  }), document.addEventListener("readystatechange", c), document.readyState === "complete") return o();
32
33
  g() && i(t);
33
- }), oe, b = new Proxy({}, { get: (e, t) => async (...e) => {
34
- await y(), oe ??= ee({}, {
34
+ }), se, b = new Proxy({}, { get: (e, t) => async (...e) => {
35
+ await y(), se ??= te({}, {
35
36
  transport: window,
36
37
  revivableModules: i
37
38
  });
38
- let n = (await oe)[t];
39
+ let n = (await se)[t];
39
40
  return n(...e);
40
- } }), se = {
41
+ } }), ce = {
41
42
  scope: "network.fetch",
42
43
  category: "network",
43
44
  severity: 0,
44
45
  title: "Fetch data from other sites",
45
46
  description: "Lets the app download public data from other websites directly, past the usual cross-origin limits."
46
- }, ce = {
47
+ }, le = {
47
48
  scope: "network.fetchCredentialed",
48
49
  category: "network",
49
50
  severity: 3,
50
51
  unsafe: !0,
51
52
  title: "Fetch from other sites, signed in as you",
52
53
  description: "Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see."
53
- }, le = {
54
+ }, ue = {
54
55
  scope: "network.fetchLocal",
55
56
  category: "network",
56
57
  severity: 3,
57
58
  unsafe: !0,
58
59
  title: "Access devices on your local network",
59
60
  description: "Lets the app reach devices and services on your home or work network, which websites normally cannot touch."
60
- }, ue = (e) => {
61
+ }, de = (e) => {
61
62
  let t = e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);
62
63
  if (!t) return !1;
63
64
  let [n, r] = [Number(t[1]), Number(t[2])];
64
65
  return n === 10 || n === 127 || n === 0 || n === 169 && r === 254 || n === 172 && r >= 16 && r <= 31 || n === 192 && r === 168;
65
- }, de = (e) => {
66
+ }, fe = (e) => {
66
67
  let t;
67
68
  try {
68
69
  t = new URL(e);
@@ -70,8 +71,8 @@ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie]
70
71
  return !1;
71
72
  }
72
73
  let n = t.hostname.replace(/^\[|\]$/g, "").toLowerCase().replace(/\.$/, "");
73
- return n === "localhost" || n.endsWith(".localhost") || n.endsWith(".local") || n.endsWith(".internal") || n.endsWith(".home.arpa") ? !0 : n.includes(":") ? n === "::" || n === "::1" || n.startsWith("fc") || n.startsWith("fd") || /^fe[89ab]/.test(n) || n.startsWith("::ffff:") : ue(n);
74
- }, fe = ["fkn.app", "fkn.dev"], x = (e) => {
74
+ return n === "localhost" || n.endsWith(".localhost") || n.endsWith(".local") || n.endsWith(".internal") || n.endsWith(".home.arpa") ? !0 : n.includes(":") ? n === "::" || n === "::1" || n.startsWith("fc") || n.startsWith("fd") || /^fe[89ab]/.test(n) || n.startsWith("::ffff:") : de(n);
75
+ }, pe = ["fkn.app", "fkn.dev"], x = (e) => {
75
76
  let t;
76
77
  try {
77
78
  t = new URL(e);
@@ -80,12 +81,12 @@ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie]
80
81
  }
81
82
  if (t.protocol === "chrome-extension:" || t.protocol === "moz-extension:") return !0;
82
83
  let n = t.hostname;
83
- return fe.some((e) => n === e || n.endsWith(`.${e}`));
84
+ return pe.some((e) => n === e || n.endsWith(`.${e}`));
84
85
  }, S = (e) => {
85
86
  if (x(e)) throw Error("fetch: refusing to target the extension's own pages or FKN platform domains");
86
- }, pe = ["origin", "referer"], me = (e) => {
87
+ }, me = ["origin", "referer"], he = (e) => {
87
88
  if (!e?.headers) return;
88
- let t = new Headers(e.headers), n = pe.map((e) => {
89
+ let t = new Headers(e.headers), n = me.map((e) => {
89
90
  let n = t.get(e);
90
91
  return n === null ? void 0 : [e, n];
91
92
  }).filter((e) => e !== void 0);
@@ -101,25 +102,25 @@ var g = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie]
101
102
  body: r,
102
103
  credentials: t?.credentials === "include" ? "include" : "omit",
103
104
  redirect: n.redirect,
104
- unsafeHeaders: me(t),
105
+ unsafeHeaders: he(t),
105
106
  reason: t?.reason,
106
107
  signal: t?.signal ?? void 0
107
108
  });
108
- }, he = {
109
+ }, ge = {
109
110
  scope: "network.readCookie",
110
111
  category: "network",
111
112
  severity: 3,
112
113
  unsafe: !0,
113
114
  title: "Read a site’s cookie",
114
115
  description: "Lets the app read a named cookie from another site, which can include the login token only that site should see."
115
- }, ge = { get: (e) => b.getCookie(e) }, _e = {
116
+ }, _e = { get: (e) => b.getCookie(e) }, ve = {
116
117
  scope: "network.modifyRequestHeaders",
117
118
  category: "network",
118
119
  severity: 2,
119
120
  unsafe: !0,
120
121
  title: "Rewrite request headers to other sites",
121
122
  description: "Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites."
122
- }, ve = (e) => b.setRequestHeaderRule(e), ye = (e) => b.removeRequestHeaderRule({ ruleId: e });
123
+ }, ye = (e) => b.setRequestHeaderRule(e), be = (e) => b.removeRequestHeaderRule({ ruleId: e });
123
124
  (() => {
124
125
  let e = {}, t = [...c.selectorModules, ...r.selectorModules];
125
126
  for (let n of t) n.render && !(n.type in e) && (e[n.type] = n.render);
@@ -141,19 +142,19 @@ var w = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", T = (e) => {
141
142
  return n === "fkn.app" || n.endsWith(".fkn.app");
142
143
  }, E = (e) => {
143
144
  if (T(e)) throw Error("attachFrame: refusing to target the extension's own pages or fkn.app");
144
- }, be = {
145
+ }, xe = {
145
146
  scope: "embed.iframe",
146
147
  category: "embed",
147
148
  severity: 0,
148
149
  title: "Load another website inside this app",
149
150
  description: "Lets the app embed external pages directly inside its own view."
150
- }, xe = {
151
+ }, Se = {
151
152
  scope: "embed.open",
152
153
  category: "embed",
153
154
  severity: 0,
154
155
  title: "Open a website inside this app",
155
156
  description: "Lets the app navigate to another site without leaving its window."
156
- }, Se = async ({ iframe: e, domains: t = [] }) => {
157
+ }, Ce = async ({ iframe: e, domains: t = [] }) => {
157
158
  let n = crypto.randomUUID();
158
159
  if (E(e.src), await y(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
159
160
  e.dispatchEvent(new CustomEvent(w, { detail: n }));
@@ -169,22 +170,22 @@ var w = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", T = (e) => {
169
170
  goto: c,
170
171
  url: l
171
172
  };
172
- }, Ce = { request: (e) => b.requestPermissions(e.map((e) => ({
173
+ }, we = { request: (e) => b.requestPermissions(e.map((e) => ({
173
174
  key: e.key,
174
175
  scope: e.scope ?? "",
175
176
  reason: e.reason
176
- }))) }, we = 32, Te = typeof CSS < "u" && CSS.supports("clip-path", "path('M0 0H1V1H0Z')"), Ee = (e) => {
177
+ }))) }, Te = 32, Ee = typeof CSS < "u" && CSS.supports("clip-path", "path('M0 0H1V1H0Z')"), De = (e) => {
177
178
  let t = e.style;
178
179
  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("clip-path", "inset(100%)", "important"), t.setProperty("background", "transparent"), t.setProperty("color-scheme", "normal"), t.setProperty("z-index", "2147483647"), e.setAttribute("title", "FKN");
179
- }, De = ({ x: e, y: t, width: n, height: r }) => `M${e} ${t}h${n}v${r}h${-n}Z`, Oe = (e, { modal: t, rects: n }) => {
180
- if (!Te) {
180
+ }, Oe = ({ x: e, y: t, width: n, height: r }) => `M${e} ${t}h${n}v${r}h${-n}Z`, ke = (e, { modal: t, rects: n }) => {
181
+ if (!Ee) {
181
182
  let r = t || n.length > 0;
182
183
  e.style.setProperty("pointer-events", r ? "auto" : "none", "important"), e.style.setProperty("visibility", r ? "visible" : "hidden", "important");
183
184
  return;
184
185
  }
185
- let r = t ? "none" : n.length === 0 ? "inset(100%)" : `path('${n.map(De).join("")}')`, i = r === "none" || CSS.supports("clip-path", r) ? r : "inset(100%)";
186
+ let r = t ? "none" : n.length === 0 ? "inset(100%)" : `path('${n.map(Oe).join("")}')`, i = r === "none" || CSS.supports("clip-path", r) ? r : "inset(100%)";
186
187
  e.style.setProperty("clip-path", i, "important");
187
- }, ke = (e) => {
188
+ }, Ae = (e) => {
188
189
  if (typeof e != "object" || !e) return null;
189
190
  let { x: t, y: n, width: r, height: i } = e;
190
191
  if (![
@@ -200,45 +201,45 @@ var w = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", T = (e) => {
200
201
  width: l - s,
201
202
  height: u - c
202
203
  };
203
- }, Ae = (e) => {
204
+ }, je = (e) => {
204
205
  if (typeof e != "object" || !e) return null;
205
- let t = e, n = (Array.isArray(t.rects) ? t.rects.slice(0, we) : []).map(ke).filter((e) => e !== null && e.width > 0 && e.height > 0);
206
+ let t = e, n = (Array.isArray(t.rects) ? t.rects.slice(0, Te) : []).map(Ae).filter((e) => e !== null && e.width > 0 && e.height > 0);
206
207
  return {
207
208
  modal: t.modal === !0,
208
209
  rects: n
209
210
  };
210
- }, D = null, je = () => D !== null, Me = (e) => {
211
- Ee(e), Oe(e, {
211
+ }, D = null, Me = () => D !== null, Ne = (e) => {
212
+ De(e), ke(e, {
212
213
  modal: !1,
213
214
  rects: []
214
215
  }), D = e;
215
- }, Ne = (e) => {
216
+ }, Pe = (e) => {
216
217
  if (!D) return;
217
- let t = Ae(e);
218
- t && Oe(D, t);
219
- }, Pe = "https://fkn.app", O = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, Fe = O?.querySelector(`iframe[src="${Pe}/api"]`) ?? null, k = O?.createElement("iframe") ?? null;
220
- !Fe && k && O && (k.src = `${Pe}/api`, O.body.appendChild(k));
221
- var A = Fe ?? k, Ie = A?.contentWindow ?? null;
222
- A && O && Me(A);
218
+ let t = je(e);
219
+ t && ke(D, t);
220
+ }, Fe = "https://fkn.app", O = typeof globalThis < "u" && globalThis.document ? globalThis.document : void 0, Ie = O?.querySelector(`iframe[src="${Fe}/api"]`) ?? null, k = O?.createElement("iframe") ?? null;
221
+ !Ie && k && O && (k.src = `${Fe}/api`, O.body.appendChild(k));
222
+ var A = Ie ?? k, Le = A?.contentWindow ?? null;
223
+ A && O && Ne(A);
223
224
  var j = (() => {
224
- if (typeof window < "u") return Ie ? {
225
+ if (typeof window < "u") return Le ? {
225
226
  receive: window,
226
- emit: Ie
227
+ emit: Le
227
228
  } : void 0;
228
229
  if (typeof self < "u") return {
229
230
  receive: self,
230
231
  emit: self
231
232
  };
232
- })(), Le = j !== void 0, M = j ? ee({}, {
233
+ })(), Re = j !== void 0, M = j ? te({}, {
233
234
  key: "fkn-api",
234
235
  transport: j
235
236
  }) : new Promise(() => {});
236
237
  M.then((e) => {
237
- je() && e.overlay.setHost(Ne);
238
+ Me() && e.overlay.setHost(Pe);
238
239
  }, () => {});
239
240
  //#endregion
240
241
  //#region src/lib/fkn-target.ts
241
- var Re = ["fkn.app", "fkn.dev"], ze = (e) => {
242
+ var ze = ["fkn.app", "fkn.dev"], Be = (e) => {
242
243
  let t = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, n;
243
244
  try {
244
245
  n = new URL(t);
@@ -246,8 +247,8 @@ var Re = ["fkn.app", "fkn.dev"], ze = (e) => {
246
247
  return;
247
248
  }
248
249
  let r = n.hostname;
249
- if (Re.some((e) => r === e || r.endsWith(`.${e}`))) throw Error(`fetch refuses FKN platform domains (${r})`);
250
- }, Be = (e, t) => (ze(e), M.then((n) => n.cloud.fetch(e, t))), Ve = async () => {
250
+ if (ze.some((e) => r === e || r.endsWith(`.${e}`))) throw Error(`fetch refuses FKN platform domains (${r})`);
251
+ }, Ve = (e, t) => (Be(e), M.then((n) => n.cloud.fetch(e, t))), He = async () => {
251
252
  let e = await M.then((e) => e.cloud.quota());
252
253
  return {
253
254
  premium: e.premium,
@@ -259,9 +260,9 @@ var Re = ["fkn.app", "fkn.dev"], ze = (e) => {
259
260
  bytesPerSecond: e.bytesPerSecond,
260
261
  bitsPerSecond: e.bytesPerSecond * 8
261
262
  };
262
- }, He = /* @__PURE__ */ n({ lookup: () => Ue }), Ue = (e, t) => M.then((n) => n.cloud.dns.lookup(e, t)), We = new TextEncoder();
263
+ }, Ue = /* @__PURE__ */ n({ lookup: () => We }), We = (e, t) => M.then((n) => n.cloud.dns.lookup(e, t)), Ge = new TextEncoder();
263
264
  new TextDecoder();
264
- var N = (e) => f.isValid(e), P = (e) => p.isValid(e), Ge = (e) => N(e) ? 4 : P(e) ? 6 : 0, Ke = (...e) => {
265
+ var N = (e) => f.isValid(e), P = (e) => p.isValid(e), Ke = (e) => N(e) ? 4 : P(e) ? 6 : 0, qe = (...e) => {
265
266
  if (typeof e[0] == "string") throw Error("FKN WebVPN does not support IPC connections");
266
267
  let t = typeof e.at(-1) == "function" ? e.at(-1) : void 0;
267
268
  return e[0] && typeof e[0] == "object" ? {
@@ -272,7 +273,7 @@ var N = (e) => f.isValid(e), P = (e) => p.isValid(e), Ge = (e) => N(e) ? 4 : P(e
272
273
  host: typeof e[1] == "string" ? e[1] : void 0,
273
274
  callback: t
274
275
  };
275
- }, qe = (...e) => {
276
+ }, Je = (...e) => {
276
277
  let t = typeof e.at(-1) == "function" ? e.at(-1) : void 0, n = e[0] ?? 0, r = typeof e[1] == "string" ? e[1] : void 0;
277
278
  return typeof e[0] == "object" ? {
278
279
  ...e[0],
@@ -284,7 +285,7 @@ var N = (e) => f.isValid(e), P = (e) => p.isValid(e), Ge = (e) => N(e) ? 4 : P(e
284
285
  port: n,
285
286
  callback: t
286
287
  };
287
- }, Je = (...e) => {
288
+ }, Ye = (...e) => {
288
289
  let t = typeof e.at(-1) == "function" ? e.at(-1) : void 0, n = e[0];
289
290
  if (typeof e[2] == "number") return {
290
291
  message: n,
@@ -309,15 +310,15 @@ var N = (e) => f.isValid(e), P = (e) => p.isValid(e), Ge = (e) => N(e) ? 4 : P(e
309
310
  new TextEncoder(), new TextDecoder();
310
311
  //#endregion
311
312
  //#region src/lib/webvpn/net.ts
312
- var Ye = /* @__PURE__ */ n({
313
+ var Xe = /* @__PURE__ */ n({
313
314
  Server: () => I,
314
315
  Socket: () => F,
315
- _default: () => $e,
316
- connect: () => Xe,
317
- createConnection: () => Ze,
318
- createServer: () => Qe,
319
- default: () => $e,
320
- isIP: () => Ge,
316
+ _default: () => et,
317
+ connect: () => Ze,
318
+ createConnection: () => Qe,
319
+ createServer: () => $e,
320
+ default: () => et,
321
+ isIP: () => Ke,
321
322
  isIPv4: () => N,
322
323
  isIPv6: () => P
323
324
  }), F = class extends d.Duplex {
@@ -380,7 +381,7 @@ var Ye = /* @__PURE__ */ n({
380
381
  }).catch(n);
381
382
  }
382
383
  connect(...e) {
383
- let t = Ke(...e), n = this.__webvpn_tcp_socket_init__(M.then((e) => e.cloud.webvpn.tcpSocket({
384
+ let t = qe(...e), n = this.__webvpn_tcp_socket_init__(M.then((e) => e.cloud.webvpn.tcpSocket({
384
385
  remoteAddress: t.host ?? "localhost",
385
386
  remotePort: t.port
386
387
  })));
@@ -507,7 +508,7 @@ var Ye = /* @__PURE__ */ n({
507
508
  return this._remoteAddress.family;
508
509
  }
509
510
  timeout;
510
- }, I = class extends ne {
511
+ }, I = class extends re {
511
512
  _localAddress;
512
513
  _webVPNTcpSocketListenerPromise;
513
514
  constructor(e, t) {
@@ -525,7 +526,7 @@ var Ye = /* @__PURE__ */ n({
525
526
  }), this._webVPNTcpSocketListenerPromise;
526
527
  }
527
528
  listen(...e) {
528
- let t = Ke(...e), n = (e) => {
529
+ let t = qe(...e), n = (e) => {
529
530
  let t = new F({ connection: Promise.resolve(e) });
530
531
  this.emit("connection", t);
531
532
  }, r = (e) => M.then((r) => r.cloud.webvpn.tcpSocketListener({
@@ -562,23 +563,23 @@ var Ye = /* @__PURE__ */ n({
562
563
  connections;
563
564
  listening;
564
565
  async [Symbol.asyncDispose]() {}
565
- }, Xe = (e, t) => new F().connect(e, t), Ze = (e, t) => new F().connect(e, t), Qe = (e, t) => {
566
+ }, Ze = (e, t) => new F().connect(e, t), Qe = (e, t) => new F().connect(e, t), $e = (e, t) => {
566
567
  typeof e == "function" && (t = e, e = void 0);
567
568
  let n = new I(e);
568
569
  return t && n.on("connection", t), n;
569
- }, $e = {
570
+ }, et = {
570
571
  Socket: F,
571
572
  Server: I,
572
- connect: Xe,
573
- createConnection: Ze,
574
- createServer: Qe,
575
- isIP: Ge,
573
+ connect: Ze,
574
+ createConnection: Qe,
575
+ createServer: $e,
576
+ isIP: Ke,
576
577
  isIPv4: N,
577
578
  isIPv6: P
578
- }, et = /* @__PURE__ */ n({
579
- Socket: () => tt,
580
- createSocket: () => it
581
- }), tt = class extends ne {
579
+ }, tt = /* @__PURE__ */ n({
580
+ Socket: () => nt,
581
+ createSocket: () => at
582
+ }), nt = class extends re {
582
583
  _type;
583
584
  _localAddress;
584
585
  _remoteAddress;
@@ -648,7 +649,7 @@ var Ye = /* @__PURE__ */ n({
648
649
  }
649
650
  }
650
651
  _peerTail(e, t) {
651
- if (e === void 0 || t === void 0) return nt;
652
+ if (e === void 0 || t === void 0) return rt;
652
653
  let n = `${e}|${t}`, r = this._peerTailCache.get(n);
653
654
  if (r) return r;
654
655
  let i = f.isValid(e) ? L(e) : R(e), a = new Uint8Array(1 + i.byteLength + 2);
@@ -692,7 +693,7 @@ var Ye = /* @__PURE__ */ n({
692
693
  return this._localAddress;
693
694
  }
694
695
  bind(...e) {
695
- let t = qe(...e), n = this._type === "udp6" ? "::" : "0.0.0.0";
696
+ let t = Je(...e), n = this._type === "udp6" ? "::" : "0.0.0.0";
696
697
  return this._webVPNUdpSocketPromise = M.then((e) => e.cloud.webvpn.udpSocket({
697
698
  type: this._type,
698
699
  address: t.address ?? n,
@@ -804,11 +805,11 @@ var Ye = /* @__PURE__ */ n({
804
805
  }
805
806
  send(...e) {
806
807
  this._webVPNUdpSocketPromise || this.bind();
807
- let t = Je(...e), n = this._type === "udp6" ? "::1" : "127.0.0.1";
808
+ let t = Ye(...e), n = this._type === "udp6" ? "::1" : "127.0.0.1";
808
809
  if (!this._webVPNUdpSocketPromise) throw Error("Socket not bound");
809
810
  this._webVPNUdpSocketPromise.then((e) => {
810
811
  if (!e) throw Error("Socket not bound");
811
- let r = rt(t.message), i = t.callback, a = t.address ?? n, o = this._remoteAddress !== void 0 && t.address === void 0;
812
+ let r = it(t.message), i = t.callback, a = t.address ?? n, o = this._remoteAddress !== void 0 && t.address === void 0;
812
813
  if (this._dataPort && (o || f.isValid(a) || p.isValid(a))) {
813
814
  this._portSend(r, o ? void 0 : a, o ? void 0 : t.port), i?.call(this, null, r.byteLength);
814
815
  return;
@@ -870,12 +871,12 @@ var Ye = /* @__PURE__ */ n({
870
871
  this.close(e);
871
872
  });
872
873
  }
873
- }, nt = new Uint8Array([2]), rt = (e) => {
874
- if (typeof e == "string") return We.encode(e);
874
+ }, rt = new Uint8Array([2]), it = (e) => {
875
+ if (typeof e == "string") return Ge.encode(e);
875
876
  if (e instanceof Uint8Array) return e;
876
877
  if (ArrayBuffer.isView(e)) return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
877
878
  if (Array.isArray(e)) {
878
- let t = e.map(rt), n = new Uint8Array(t.reduce((e, t) => e + t.byteLength, 0)), r = 0;
879
+ let t = e.map(it), n = new Uint8Array(t.reduce((e, t) => e + t.byteLength, 0)), r = 0;
879
880
  for (let e of t) n.set(e, r), r += e.byteLength;
880
881
  return n;
881
882
  }
@@ -888,25 +889,25 @@ var Ye = /* @__PURE__ */ n({
888
889
  let t = new p(e).getBitsBase16(0, 128).match(/.{2}/g);
889
890
  if (!t || t.length !== 16) throw Error(`Invalid IPv6 address: ${e}`);
890
891
  return new Uint8Array(t.map((e) => parseInt(e, 16)));
891
- }, it = (e, t) => {
892
- let n = new tt(typeof e == "string" ? { type: e } : e);
892
+ }, at = (e, t) => {
893
+ let n = new nt(typeof e == "string" ? { type: e } : e);
893
894
  return t && n.on("message", t), n;
894
- }, at = /* @__PURE__ */ n({
895
+ }, ot = /* @__PURE__ */ n({
895
896
  Agent: () => Y,
896
897
  ClientRequest: () => q,
897
898
  HTTPParser: () => U,
898
899
  IncomingMessage: () => W,
899
- METHODS: () => st,
900
+ METHODS: () => ct,
900
901
  STATUS_CODES: () => z,
901
902
  Server: () => J,
902
903
  ServerResponse: () => K,
903
- _default: () => vt,
904
- createServer: () => _t,
905
- default: () => vt,
906
- get: () => gt,
907
- globalAgent: () => ht,
904
+ _default: () => yt,
905
+ createServer: () => vt,
906
+ default: () => yt,
907
+ get: () => _t,
908
+ globalAgent: () => gt,
908
909
  request: () => X
909
- }), ot = new TextDecoder("latin1"), st = /* @__PURE__ */ "ACL.BIND.CHECKOUT.CONNECT.COPY.DELETE.GET.HEAD.LINK.LOCK.M-SEARCH.MERGE.MKACTIVITY.MKCALENDAR.MKCOL.MOVE.NOTIFY.OPTIONS.PATCH.POST.PROPFIND.PROPPATCH.PURGE.PUT.REBIND.REPORT.SEARCH.SOURCE.SUBSCRIBE.TRACE.UNBIND.UNLINK.UNLOCK.UNSUBSCRIBE".split("."), z = {
910
+ }), st = new TextDecoder("latin1"), ct = /* @__PURE__ */ "ACL.BIND.CHECKOUT.CONNECT.COPY.DELETE.GET.HEAD.LINK.LOCK.M-SEARCH.MERGE.MKACTIVITY.MKCALENDAR.MKCOL.MOVE.NOTIFY.OPTIONS.PATCH.POST.PROPFIND.PROPPATCH.PURGE.PUT.REBIND.REPORT.SEARCH.SOURCE.SUBSCRIBE.TRACE.UNBIND.UNLINK.UNLOCK.UNSUBSCRIBE".split("."), z = {
910
911
  100: "Continue",
911
912
  101: "Switching Protocols",
912
913
  102: "Processing",
@@ -970,7 +971,7 @@ var Ye = /* @__PURE__ */ n({
970
971
  509: "Bandwidth Limit Exceeded",
971
972
  510: "Not Extended",
972
973
  511: "Network Authentication Required"
973
- }, ct = new Set([
974
+ }, lt = new Set([
974
975
  "content-type",
975
976
  "content-length",
976
977
  "user-agent",
@@ -989,15 +990,15 @@ var Ye = /* @__PURE__ */ n({
989
990
  "server",
990
991
  "age",
991
992
  "expires"
992
- ]), B = 13, V = 10, lt = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/, H = (e, t) => (e.code = t, e), ut = (e, t) => {
993
+ ]), B = 13, V = 10, ut = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/, H = (e, t) => (e.code = t, e), dt = (e, t) => {
993
994
  if (e.length === 0) return t;
994
995
  if (t.length === 0) return e;
995
996
  let n = new Uint8Array(e.length + t.length);
996
997
  return n.set(e, 0), n.set(t, e.length), n;
997
- }, dt = (e, t) => {
998
+ }, ft = (e, t) => {
998
999
  for (let n = t; n + 1 < e.length; n++) if (e[n] === B && e[n + 1] === V) return n;
999
1000
  return -1;
1000
- }, ft = (e) => {
1001
+ }, pt = (e) => {
1001
1002
  for (let t = 0; t + 3 < e.length; t++) if (e[t] === B && e[t + 1] === V && e[t + 2] === B && e[t + 3] === V) return t;
1002
1003
  return -1;
1003
1004
  }, U = class {
@@ -1011,10 +1012,10 @@ var Ye = /* @__PURE__ */ n({
1011
1012
  this.mode = e, this.handlers = t;
1012
1013
  }
1013
1014
  execute(e) {
1014
- this.buf = ut(this.buf, e);
1015
+ this.buf = dt(this.buf, e);
1015
1016
  let t = !0;
1016
1017
  for (; t;) if (t = !1, this.state === "HEAD") {
1017
- let e = ft(this.buf);
1018
+ let e = pt(this.buf);
1018
1019
  if (e === -1) return;
1019
1020
  let n = this.buf.subarray(0, e);
1020
1021
  this.buf = this.buf.subarray(e + 4);
@@ -1029,7 +1030,7 @@ var Ye = /* @__PURE__ */ n({
1029
1030
  this.state = "HEAD", this.framing = "none", this.bodyRemaining = 0, this.chunkState = "size", this.skipBody = !1;
1030
1031
  }
1031
1032
  parseHead(e) {
1032
- let t = ot.decode(e).split("\r\n"), n = t.shift() ?? "", r = [];
1033
+ let t = st.decode(e).split("\r\n"), n = t.shift() ?? "", r = [];
1033
1034
  for (let e of t) (e.startsWith(" ") || e.startsWith(" ")) && r.length > 0 ? r[r.length - 1] += " " + e.trim() : r.push(e);
1034
1035
  let i = [], a = {};
1035
1036
  for (let e of r) {
@@ -1067,7 +1068,7 @@ var Ye = /* @__PURE__ */ n({
1067
1068
  return;
1068
1069
  }
1069
1070
  let i = e[r];
1070
- i === void 0 ? e[r] = n : ct.has(r) || (e[r] = `${i}, ${n}`);
1071
+ i === void 0 ? e[r] = n : lt.has(r) || (e[r] = `${i}, ${n}`);
1071
1072
  }
1072
1073
  setupBody(e) {
1073
1074
  if (this.skipBody) {
@@ -1100,9 +1101,9 @@ var Ye = /* @__PURE__ */ n({
1100
1101
  }
1101
1102
  consumeChunked() {
1102
1103
  for (;;) if (this.chunkState === "size") {
1103
- let e = dt(this.buf, 0);
1104
+ let e = ft(this.buf, 0);
1104
1105
  if (e === -1) return !1;
1105
- let t = ot.decode(this.buf.subarray(0, e)), n = parseInt(t.split(";")[0].trim(), 16);
1106
+ let t = st.decode(this.buf.subarray(0, e)), n = parseInt(t.split(";")[0].trim(), 16);
1106
1107
  if (this.buf = this.buf.subarray(e + 2), Number.isNaN(n)) return !0;
1107
1108
  n === 0 ? this.chunkState = "trailer" : (this.bodyRemaining = n, this.chunkState = "data");
1108
1109
  } else if (this.chunkState === "data") {
@@ -1113,13 +1114,13 @@ var Ye = /* @__PURE__ */ n({
1113
1114
  if (this.buf.length < 2) return !1;
1114
1115
  this.buf = this.buf.subarray(2), this.chunkState = "size";
1115
1116
  } else {
1116
- let e = dt(this.buf, 0);
1117
+ let e = ft(this.buf, 0);
1117
1118
  if (e === -1) return !1;
1118
1119
  let t = e === 0;
1119
1120
  if (this.buf = this.buf.subarray(e + 2), t) return !0;
1120
1121
  }
1121
1122
  }
1122
- }, pt = (e, t) => m.isBuffer(e) ? e : typeof e == "string" ? m.from(e, t ?? "utf8") : e instanceof Uint8Array ? m.from(e) : e instanceof ArrayBuffer ? m.from(new Uint8Array(e)) : m.from(String(e)), W = class extends d.Readable {
1123
+ }, mt = (e, t) => m.isBuffer(e) ? e : typeof e == "string" ? m.from(e, t ?? "utf8") : e instanceof Uint8Array ? m.from(e) : e instanceof ArrayBuffer ? m.from(new Uint8Array(e)) : m.from(String(e)), W = class extends d.Readable {
1123
1124
  httpVersion = "1.1";
1124
1125
  httpVersionMajor = 1;
1125
1126
  httpVersionMinor = 1;
@@ -1154,7 +1155,7 @@ var Ye = /* @__PURE__ */ n({
1154
1155
  _bodyWritten = !1;
1155
1156
  setHeader(e, t) {
1156
1157
  if (this.headersSent) throw H(/* @__PURE__ */ Error("Cannot set headers after they are sent to the client"), "ERR_HTTP_HEADERS_SENT");
1157
- if (typeof e != "string" || !lt.test(e)) throw H(/* @__PURE__ */ TypeError(`Header name must be a valid HTTP token [${JSON.stringify(String(e))}]`), "ERR_INVALID_HTTP_TOKEN");
1158
+ if (typeof e != "string" || !ut.test(e)) throw H(/* @__PURE__ */ TypeError(`Header name must be a valid HTTP token [${JSON.stringify(String(e))}]`), "ERR_INVALID_HTTP_TOKEN");
1158
1159
  if (t === void 0) throw H(/* @__PURE__ */ TypeError(`Invalid value "undefined" for header "${e}"`), "ERR_HTTP_INVALID_HEADER_VALUE");
1159
1160
  return this._headerStore.set(e.toLowerCase(), [e, Array.isArray(t) ? [...t] : t]), this;
1160
1161
  }
@@ -1195,7 +1196,7 @@ var Ye = /* @__PURE__ */ n({
1195
1196
  return this._bodyWritten = !0, super.write(e, t, n);
1196
1197
  }
1197
1198
  _write(e, t, n) {
1198
- let r = pt(e), i = [];
1199
+ let r = mt(e), i = [];
1199
1200
  if (this.headersSent ||= (this._implicitHeader(), i.push(m.from(this._headBlock, "latin1")), !0), this.chunkedEncoding ? r.length > 0 && (i.push(m.from(`${r.length.toString(16)}\r\n`, "latin1")), i.push(r), i.push(m.from("\r\n", "latin1"))) : i.push(r), i.length === 0) {
1200
1201
  n();
1201
1202
  return;
@@ -1213,7 +1214,7 @@ var Ye = /* @__PURE__ */ n({
1213
1214
  end(e, t, n) {
1214
1215
  if (e != null && typeof e != "function" && !this._bodyWritten && !this.headersSent && !this.chunkedEncoding && !this.hasHeader("content-length")) {
1215
1216
  let n = typeof t == "string" ? t : void 0;
1216
- this.setHeader("Content-Length", pt(e, n).length);
1217
+ this.setHeader("Content-Length", mt(e, n).length);
1217
1218
  }
1218
1219
  return super.end(e, t, n);
1219
1220
  }
@@ -1262,7 +1263,7 @@ var Ye = /* @__PURE__ */ n({
1262
1263
  setTimeout(e, t) {
1263
1264
  return this.socket?.setTimeout(e, t), this;
1264
1265
  }
1265
- }, mt = (...e) => {
1266
+ }, ht = (...e) => {
1266
1267
  let t = {}, n = {}, r, i = [...e], a = i.shift();
1267
1268
  if (typeof a == "string" || a instanceof URL) {
1268
1269
  let e = typeof a == "string" ? new URL(a) : a;
@@ -1403,34 +1404,34 @@ var Ye = /* @__PURE__ */ n({
1403
1404
  return `${e.host ?? "localhost"}:${e.port ?? ""}:${e.localAddress ?? ""}`;
1404
1405
  }
1405
1406
  destroy() {}
1406
- }, ht = new Y(), X = (...e) => {
1407
- let { options: t, callback: n } = mt(...e);
1407
+ }, gt = new Y(), X = (...e) => {
1408
+ let { options: t, callback: n } = ht(...e);
1408
1409
  return new q(t, n);
1409
- }, gt = (...e) => {
1410
+ }, _t = (...e) => {
1410
1411
  let t = X(...e);
1411
1412
  return t.end(), t;
1412
- }, _t = (e, t) => new J(e, t), vt = {
1413
- METHODS: st,
1413
+ }, vt = (e, t) => new J(e, t), yt = {
1414
+ METHODS: ct,
1414
1415
  STATUS_CODES: z,
1415
1416
  Agent: Y,
1416
- globalAgent: ht,
1417
+ globalAgent: gt,
1417
1418
  Server: J,
1418
1419
  ServerResponse: K,
1419
1420
  IncomingMessage: W,
1420
1421
  ClientRequest: q,
1421
1422
  OutgoingMessage: G,
1422
- createServer: _t,
1423
+ createServer: vt,
1423
1424
  request: X,
1424
- get: gt
1425
- }, yt = /* @__PURE__ */ n({
1426
- available: () => bt,
1427
- dgram: () => et,
1428
- dns: () => He,
1429
- fetch: () => Be,
1430
- http: () => at,
1431
- net: () => Ye,
1432
- quota: () => Ve
1433
- }), bt = () => Le, Z = async (e) => {
1425
+ get: _t
1426
+ }, bt = /* @__PURE__ */ n({
1427
+ available: () => xt,
1428
+ dgram: () => tt,
1429
+ dns: () => Ue,
1430
+ fetch: () => Ve,
1431
+ http: () => ot,
1432
+ net: () => Xe,
1433
+ quota: () => He
1434
+ }), xt = () => Re, Z = async (e) => {
1434
1435
  if (typeof window > "u") return !1;
1435
1436
  if (g()) return !0;
1436
1437
  let t = await M, n = null, r = new Promise((e) => {
@@ -1445,73 +1446,73 @@ v(() => (Q ||= Z().then(() => void 0).finally(() => {
1445
1446
  }), Q));
1446
1447
  //#endregion
1447
1448
  //#region src/lib/desktop.ts
1448
- var xt = /* @__PURE__ */ n({
1449
- available: () => St,
1450
- dgram: () => Et,
1451
- dns: () => wt,
1452
- fetch: () => Ct,
1453
- fs: () => Dt,
1454
- net: () => Tt
1455
- }), St = () => !1, $ = (e) => (...t) => {
1449
+ var St = /* @__PURE__ */ n({
1450
+ available: () => Ct,
1451
+ dgram: () => Dt,
1452
+ dns: () => Tt,
1453
+ fetch: () => wt,
1454
+ fs: () => Ot,
1455
+ net: () => Et
1456
+ }), Ct = () => !1, $ = (e) => (...t) => {
1456
1457
  throw Error(`The FKN desktop app is not connected, desktop.${e} is unavailable`);
1457
- }, Ct = $("fetch"), wt = { lookup: $("dns.lookup") }, Tt = {
1458
+ }, wt = $("fetch"), Tt = { lookup: $("dns.lookup") }, Et = {
1458
1459
  connect: $("net.connect"),
1459
1460
  createConnection: $("net.createConnection"),
1460
1461
  createServer: $("net.createServer")
1461
- }, Et = { createSocket: $("dgram.createSocket") }, Dt = {
1462
+ }, Dt = { createSocket: $("dgram.createSocket") }, Ot = {
1462
1463
  isLocalDirectorySupported: () => !1,
1463
1464
  pickLocalDirectory: $("fs.pickLocalDirectory"),
1464
1465
  queryDirectoryPermission: $("fs.queryDirectoryPermission"),
1465
1466
  ensureDirectoryPermission: $("fs.ensureDirectoryPermission")
1466
- }, Ot = () => typeof document < "u" && g(), kt = async (e, t) => {
1467
- if (ze(e), t?.credentials === "include") {
1467
+ }, kt = () => typeof document < "u" && g(), At = async (e, t) => {
1468
+ if (Be(e), t?.credentials === "include") {
1468
1469
  if (typeof document > "u") throw Error("fetch with credentials needs the FKN extension, which only exists in window realms");
1469
1470
  return C(e, t);
1470
1471
  }
1471
- return Ot() ? C(e, {
1472
+ return kt() ? C(e, {
1472
1473
  ...t,
1473
1474
  credentials: "omit"
1474
- }) : St() ? Ct(e, t) : Be(e, t);
1475
- }, At = /* @__PURE__ */ n({
1475
+ }) : Ct() ? wt(e, t) : Ve(e, t);
1476
+ }, jt = /* @__PURE__ */ n({
1476
1477
  ATTACH_FRAME_EVENT_KEY: () => w,
1477
1478
  assertAttachableFrameUrl: () => E,
1478
1479
  assertFetchableUrl: () => S,
1479
- attachFrame: () => Se,
1480
- attachFramePermission: () => be,
1481
- available: () => Ot,
1480
+ attachFrame: () => Ce,
1481
+ attachFramePermission: () => xe,
1482
+ available: () => kt,
1482
1483
  box: () => l,
1483
- cookies: () => ge,
1484
+ cookies: () => _e,
1484
1485
  createVideoElementHandle: () => e,
1485
1486
  events: () => h,
1486
1487
  extension: () => h,
1487
1488
  fetch: () => C,
1488
- fetchCredentialedPermission: () => ce,
1489
- fetchLocalPermission: () => le,
1490
- fetchPermission: () => se,
1491
- gotoPermission: () => xe,
1489
+ fetchCredentialedPermission: () => le,
1490
+ fetchLocalPermission: () => ue,
1491
+ fetchPermission: () => ce,
1492
+ gotoPermission: () => Se,
1492
1493
  handleRevivableModules: () => i,
1493
1494
  isBlockedFetchUrl: () => x,
1494
1495
  isBlockedFrameUrl: () => T,
1495
1496
  isExtensionExposed: () => g,
1496
- isLocalNetworkUrl: () => de,
1497
+ isLocalNetworkUrl: () => fe,
1497
1498
  isType: () => t,
1498
- modifyRequestHeadersPermission: () => _e,
1499
- permissions: () => Ce,
1499
+ modifyRequestHeadersPermission: () => ve,
1500
+ permissions: () => we,
1500
1501
  promptInstall: () => Z,
1501
- readCookiePermission: () => he,
1502
- removeRequestHeaderRule: () => ye,
1502
+ readCookiePermission: () => ge,
1503
+ removeRequestHeaderRule: () => be,
1503
1504
  revive: () => o,
1504
1505
  setMissingExtensionHandler: () => v,
1505
- setRequestHeaderRule: () => ve,
1506
+ setRequestHeaderRule: () => ye,
1506
1507
  type: () => a,
1507
1508
  waitForExtensionExposure: () => y
1508
- }), jt = /* @__PURE__ */ n({
1509
- ensureDirectoryPermission: () => Ft,
1510
- isLocalDirectorySupported: () => Mt,
1511
- pickLocalDirectory: () => Nt,
1512
- queryDirectoryPermission: () => Pt
1513
- }), Mt = () => typeof window < "u" && "showDirectoryPicker" in window, Nt = async (e = {}) => {
1514
- if (!Mt()) return;
1509
+ }), Mt = /* @__PURE__ */ n({
1510
+ ensureDirectoryPermission: () => It,
1511
+ isLocalDirectorySupported: () => Nt,
1512
+ pickLocalDirectory: () => Pt,
1513
+ queryDirectoryPermission: () => Ft
1514
+ }), Nt = () => typeof window < "u" && "showDirectoryPicker" in window, Pt = async (e = {}) => {
1515
+ if (!Nt()) return;
1515
1516
  let t = window.showDirectoryPicker;
1516
1517
  return t({
1517
1518
  mode: "readwrite",
@@ -1519,25 +1520,47 @@ var xt = /* @__PURE__ */ n({
1519
1520
  }).catch((e) => {
1520
1521
  if (e?.name !== "AbortError") throw e;
1521
1522
  });
1522
- }, Pt = async (e, t = "readwrite") => {
1523
+ }, Ft = async (e, t = "readwrite") => {
1523
1524
  let { queryPermission: n } = e;
1524
1525
  return await n?.call(e, { mode: t }) ?? "granted";
1525
- }, Ft = async (e, t = "readwrite") => {
1526
- if (await Pt(e, t) === "granted") return !0;
1526
+ }, It = async (e, t = "readwrite") => {
1527
+ if (await Ft(e, t) === "granted") return !0;
1527
1528
  let { requestPermission: n } = e;
1528
1529
  return await n?.call(e, { mode: t }) === "granted";
1529
- }, It = "https://fkn.app", Lt = (e, t) => {
1530
+ }, Lt = "https://fkn.app", Rt = (e, t) => {
1530
1531
  if (typeof window > "u") throw Error("FKN @fkn/lib: relayWorker must be called from the main thread");
1531
1532
  if (!A?.contentWindow) throw Error("FKN @fkn/lib: relayWorker called before the FKN iframe was injected");
1532
- te({
1533
+ ne({
1533
1534
  receive: window,
1534
1535
  emit: A.contentWindow
1535
1536
  }, e, {
1536
1537
  key: "fkn-api",
1537
- originA: t?.originA ?? It,
1538
+ originA: t?.originA ?? Lt,
1538
1539
  originB: t?.originB ?? "*",
1539
1540
  unregisterSignal: t?.unregisterSignal
1540
1541
  });
1541
- }, Rt = async () => typeof window > "u" ? !1 : (await M).connect.prompt(location.origin).catch(() => !1);
1542
+ }, zt = async () => typeof window > "u" ? !1 : (await M).connect.prompt(location.origin).catch(() => !1), Bt = /* @__PURE__ */ n({
1543
+ info: () => Ut,
1544
+ login: () => Vt,
1545
+ logout: () => Ht,
1546
+ onChange: () => Wt
1547
+ }), Vt = async () => typeof window > "u" ? !1 : (await M).account.login(location.origin).catch(() => !1), Ht = async () => {
1548
+ typeof window > "u" || await (await M).account.logout().catch(() => {});
1549
+ }, Ut = async () => {
1550
+ if (typeof window > "u") return null;
1551
+ let e = await M.then((e) => e.account.info()).catch(() => null);
1552
+ return e ? {
1553
+ name: e.name,
1554
+ image: e.image,
1555
+ premium: e.premium,
1556
+ premiumUntil: e.premiumUntil ? Date.parse(e.premiumUntil) : null
1557
+ } : null;
1558
+ }, Wt = async (e) => {
1559
+ if (typeof window > "u") return () => {};
1560
+ let t = await M.catch(() => null);
1561
+ if (!t) return () => {};
1562
+ let n = await t.account.onChange(e).catch(() => null);
1563
+ return typeof n == "function" ? n : () => {};
1564
+ };
1542
1565
  //#endregion
1543
- export { w as ATTACH_FRAME_EVENT_KEY, E as assertAttachableFrameUrl, S as assertFetchableUrl, Se as attachFrame, be as attachFramePermission, l as box, yt as cloud, Rt as connect, ge as cookies, e as createVideoElementHandle, xt as desktop, et as dgram, He as dns, At as extension, kt as fetch, ce as fetchCredentialedPermission, le as fetchLocalPermission, se as fetchPermission, jt as fs, xe as gotoPermission, i as handleRevivableModules, at as http, x as isBlockedFetchUrl, T as isBlockedFrameUrl, g as isExtensionExposed, de as isLocalNetworkUrl, t as isType, _e as modifyRequestHeadersPermission, Ye as net, Ce as permissions, Z as promptInstall, he as readCookiePermission, Lt as relayWorker, ye as removeRequestHeaderRule, o as revive, v as setMissingExtensionHandler, ve as setRequestHeaderRule, a as type, y as waitForExtensionExposure };
1566
+ export { w as ATTACH_FRAME_EVENT_KEY, Bt as account, E as assertAttachableFrameUrl, S as assertFetchableUrl, Ce as attachFrame, xe as attachFramePermission, l as box, bt as cloud, zt as connect, u as connectButtonUrl, _e as cookies, e as createVideoElementHandle, St as desktop, tt as dgram, Ue as dns, jt as extension, At as fetch, le as fetchCredentialedPermission, ue as fetchLocalPermission, ce as fetchPermission, Mt as fs, Se as gotoPermission, i as handleRevivableModules, ot as http, x as isBlockedFetchUrl, T as isBlockedFrameUrl, g as isExtensionExposed, fe as isLocalNetworkUrl, t as isType, ve as modifyRequestHeadersPermission, Xe as net, we as permissions, Z as promptInstall, ge as readCookiePermission, Rt as relayWorker, be as removeRequestHeaderRule, o as revive, v as setMissingExtensionHandler, ye as setRequestHeaderRule, a as type, y as waitForExtensionExposure };