@fkn/lib 0.5.5 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/account.cjs +1 -1
  2. package/account.d.ts +9 -11
  3. package/account.js +2 -2
  4. package/api-BYUraih6.d.ts +524 -0
  5. package/{api-CDb2pv7C.cjs → api-DD5v1qP9.cjs} +1 -1
  6. package/{background-DvQm1JHR.js → background-BVBbBOmL.js} +41 -68
  7. package/background-B_VgpARk.cjs +1 -0
  8. package/cloud/dgram.cjs +1 -1
  9. package/cloud/dgram.d.ts +2 -541
  10. package/cloud/dgram.js +1 -3
  11. package/cloud/dns.cjs +1 -1
  12. package/cloud/dns.d.ts +3 -12
  13. package/cloud/dns.js +0 -1
  14. package/cloud/fs/promises.cjs +1 -1
  15. package/cloud/fs/promises.d.ts +7 -43
  16. package/cloud/fs/promises.js +0 -3
  17. package/cloud/fs.cjs +1 -1
  18. package/cloud/fs.d.ts +3 -75
  19. package/cloud/fs.js +3 -4
  20. package/cloud/http.cjs +1 -1
  21. package/cloud/http.d.ts +2 -767
  22. package/cloud/http.js +0 -3
  23. package/cloud/net.cjs +1 -1
  24. package/cloud/net.d.ts +2 -606
  25. package/cloud/net.js +2 -3
  26. package/cloud-5o7yJHeX.cjs +1 -0
  27. package/cloud-BFyf2uC7.js +112 -0
  28. package/cloud-gklfa4ZN.d.ts +41 -0
  29. package/cloud.cjs +1 -1
  30. package/cloud.d.ts +7 -1053
  31. package/cloud.js +8 -12
  32. package/{connect-button-poDZVmq2.cjs → connect-button-BBEjXzB3.cjs} +1 -1
  33. package/connect-button-D8KXSL6s.d.ts +4 -0
  34. package/desktop.cjs +1 -1
  35. package/desktop.d.ts +37 -34
  36. package/desktop.js +1 -1
  37. package/dgram-CE43gJq9.cjs +1 -0
  38. package/{dgram-c_Xk7ckJ.js → dgram-wtjARbt0.js} +3 -3
  39. package/dgram.cjs +1 -1
  40. package/dgram.d.ts +83 -533
  41. package/dgram.js +1 -3
  42. package/dns.cjs +1 -1
  43. package/dns.d.ts +9 -9
  44. package/dns.js +2 -2
  45. package/extension-3pxUYwrA.d.ts +16 -0
  46. package/extension-CPj10qwa.js +67 -0
  47. package/extension-D-NUXxzF.cjs +1 -0
  48. package/extension.cjs +1 -1
  49. package/extension.d.ts +3 -859
  50. package/extension.js +3 -5
  51. package/fs/promises.cjs +1 -1
  52. package/fs/promises.d.ts +8 -63
  53. package/fs/promises.js +1 -4
  54. package/fs-BfmfMBiw.cjs +1 -0
  55. package/{fs-BQs-x3_j.js → fs-D6nNf1mR.js} +4 -4
  56. package/fs-K7ROdxDx.d.ts +41 -0
  57. package/fs.cjs +1 -1
  58. package/fs.d.ts +81 -131
  59. package/fs.js +1 -4
  60. package/http.cjs +2 -2
  61. package/http.d.ts +152 -733
  62. package/http.js +7 -7
  63. package/index-BJztAQIP.d.ts +721 -0
  64. package/index-C6ZoDJg8.d.ts +31 -0
  65. package/index.cjs +1 -1
  66. package/index.d.ts +25 -2313
  67. package/index.js +23 -26
  68. package/lookup-BtwWaCZJ.d.ts +7 -0
  69. package/net-BDW1AVX1.d.ts +140 -0
  70. package/net-CpuAhaQC.cjs +1 -0
  71. package/{net-Bl6_W3bd.js → net-DKMWPXb_.js} +3 -3
  72. package/net.cjs +1 -1
  73. package/net.d.ts +2 -606
  74. package/net.js +2 -3
  75. package/{node-fs-DQn1TGJz.cjs → node-fs-C0eKnboT.cjs} +1 -1
  76. package/{node-fs-CdKPXPtW.js → node-fs-Dbf93qP7.js} +1 -1
  77. package/opfs/promises.cjs +1 -1
  78. package/opfs/promises.d.ts +8 -63
  79. package/opfs/promises.js +0 -1
  80. package/{opfs-BfcYLPGb.js → opfs-7_GmzQ93.js} +1 -1
  81. package/opfs-uClkgnb5.cjs +1 -0
  82. package/opfs.cjs +1 -1
  83. package/opfs.d.ts +80 -130
  84. package/opfs.js +3 -3
  85. package/package.json +6 -1
  86. package/packages-D36R2vBv.d.ts +108 -0
  87. package/packages.cjs +1 -0
  88. package/packages.d.ts +2 -0
  89. package/packages.js +150 -0
  90. package/{locator-9s7jNIA2.js → proxy-C8SG1Beo.js} +542 -344
  91. package/proxy-bPaU3-Cz.cjs +53 -0
  92. package/react.cjs +1 -1
  93. package/react.d.ts +11 -9
  94. package/react.js +1 -1
  95. package/{chunk-CPXzm0be.js → rolldown-runtime-DF993M8W.js} +1 -1
  96. package/rolldown-runtime-Doa5O59j.cjs +1 -0
  97. package/storage-OkwsFLN1.cjs +1 -0
  98. package/{storage-BcJfnkm3.js → storage-TmeyhZGt.js} +2 -2
  99. package/{utils-BsNRWMfl.cjs → utils-CoimMjf9.cjs} +1 -1
  100. package/background-CbU8TkWo.cjs +0 -1
  101. package/chunk-B6C_zzib.cjs +0 -1
  102. package/cloud-CWg9zCWm.cjs +0 -1
  103. package/cloud-eLyGYzbA.js +0 -33
  104. package/dgram-B3WC4VdJ.cjs +0 -1
  105. package/extension-BLkZiaAP.js +0 -253
  106. package/extension-DAiRg5ny.cjs +0 -1
  107. package/fs-DI1maxcZ.cjs +0 -1
  108. package/locator-CHfEe3Jv.cjs +0 -53
  109. package/net-C5kWnI4C.cjs +0 -1
  110. package/opfs-Dsi4FkJU.cjs +0 -1
  111. package/proxy-A9UvWUaF.cjs +0 -1
  112. package/proxy-wiZN4eTR.js +0 -14
  113. package/storage-C2-_-bTO.cjs +0 -1
  114. /package/{api-ByfayMm1.js → api--bnCFd4w.js} +0 -0
  115. /package/{connect-button-B_63ldmg.js → connect-button-Ds9KpXHe.js} +0 -0
  116. /package/{utils-CNydj3OT.js → utils-DPtyxGQu.js} +0 -0
@@ -1,7 +1,8 @@
1
- import { n as e } from "./chunk-CPXzm0be.js";
2
- import { BoxBase as t, recursiveBox as n, recursiveRevive as r } from "osra";
1
+ import { n as e } from "./rolldown-runtime-DF993M8W.js";
2
+ import { t } from "./api--bnCFd4w.js";
3
+ import { BoxBase as n, createTypedEventTarget as r, expose as i, recursiveBox as a, recursiveRevive as o } from "osra";
3
4
  //#region node_modules/@mfkn/web-extension/lib/lib/revivables/event-proxy.js
4
- var i = (e, t) => {
5
+ var s = (e, t) => {
5
6
  let n = new EventTarget(), r = /* @__PURE__ */ new Map(), i = EventTarget.prototype.addEventListener.bind(n), a = EventTarget.prototype.removeEventListener.bind(n);
6
7
  return Object.defineProperty(n, "addEventListener", {
7
8
  configurable: !0,
@@ -30,34 +31,34 @@ var i = (e, t) => {
30
31
  o && (e.removeEventListener(t, o), r.delete(t));
31
32
  }
32
33
  }), n;
33
- }, a = (e) => typeof e == "boolean" ? e ? 1 : 0 : e?.capture ? 1 : 0, o = (e) => {
34
+ }, c = (e) => typeof e == "boolean" ? +!!e : +!!e?.capture, l = (e) => {
34
35
  let t = /* @__PURE__ */ new WeakMap();
35
36
  return {
36
37
  addEventListener: (n, r, i) => {
37
38
  if (r === null) return;
38
- let o = `${n}|${a(i)}`, s = t.get(r);
39
- if (s || (s = /* @__PURE__ */ new Map(), t.set(r, s)), s.has(o)) return;
40
- let c = typeof i == "object" && !!i && !!i.once, l = (t) => {
41
- c && s.delete(o);
39
+ let a = `${n}|${c(i)}`, o = t.get(r);
40
+ if (o || (o = /* @__PURE__ */ new Map(), t.set(r, o)), o.has(a)) return;
41
+ let s = typeof i == "object" && !!i && !!i.once, l = (t) => {
42
+ s && o.delete(a);
42
43
  let i = e.unenrich(t, n);
43
44
  typeof r == "function" ? r.call(e.target, i) : r.handleEvent(i);
44
45
  };
45
- s.set(o, l), e.remoteEvents.addEventListener(n, l, i);
46
+ o.set(a, l), e.remoteEvents.addEventListener(n, l, i);
46
47
  },
47
48
  removeEventListener: (n, r, i) => {
48
49
  if (r === null) return;
49
- let o = `${n}|${a(i)}`, s = t.get(r), c = s?.get(o);
50
- c && (e.remoteEvents.removeEventListener(n, c, i), s.delete(o));
50
+ let a = `${n}|${c(i)}`, o = t.get(r), s = o?.get(a);
51
+ s && (e.remoteEvents.removeEventListener(n, s, i), o.delete(a));
51
52
  },
52
53
  dispatchEvent: (t) => e.remoteEvents.dispatchEvent(t)
53
54
  };
54
- }, s = /* @__PURE__ */ e({
55
+ }, u = /* @__PURE__ */ e({
55
56
  box: () => T,
56
57
  createVideoElementHandle: () => C,
57
58
  isType: () => w,
58
59
  revive: () => E,
59
- type: () => c
60
- }), c = "videoElement", l = [
60
+ type: () => d
61
+ }), d = "videoElement", f = [
61
62
  "currentTime",
62
63
  "volume",
63
64
  "muted",
@@ -68,22 +69,22 @@ var i = (e, t) => {
68
69
  "preload",
69
70
  "poster",
70
71
  "disableRemotePlayback"
71
- ], u = [
72
+ ], p = [
72
73
  "duration",
73
74
  "paused",
74
75
  "ended",
75
76
  "seeking",
76
77
  "readyState",
77
78
  "currentSrc"
78
- ], d = ["buffered", "seekable"], f = Symbol.for("fkn.remoteVideoElement"), p = Symbol.for("fkn.remoteVideoElement.state"), m = Symbol.for("fkn.remoteVideoElement.controller"), h = (e) => e ? Array.from({ length: e.length }, (t, n) => [e.start(n), e.end(n)]) : [], g = (e) => {
79
+ ], m = ["buffered", "seekable"], h = Symbol.for("fkn.remoteVideoElement"), g = Symbol.for("fkn.remoteVideoElement.state"), _ = Symbol.for("fkn.remoteVideoElement.controller"), v = (e) => e ? Array.from({ length: e.length }, (t, n) => [e.start(n), e.end(n)]) : [], y = (e) => {
79
80
  let t = {};
80
- for (let n of [...l, ...u]) t[n] = e[n];
81
- for (let n of d) t[n] = h(e[n]);
81
+ for (let n of [...f, ...p]) t[n] = e[n];
82
+ for (let n of m) t[n] = v(e[n]);
82
83
  return t.error = e.error ? {
83
84
  code: e.error.code,
84
85
  message: e.error.message
85
86
  } : null, t;
86
- }, _ = (e) => {
87
+ }, ee = (e) => {
87
88
  let t = (t) => {
88
89
  if (!Number.isInteger(t) || t < 0 || t >= e.length) throw new DOMException("Index or size is negative or greater than the allowed amount", "IndexSizeError");
89
90
  };
@@ -98,16 +99,16 @@ var i = (e, t) => {
98
99
  return t(n), e[n][1];
99
100
  }
100
101
  };
101
- }, v = (e) => e ? {
102
+ }, te = (e) => e ? {
102
103
  code: e.code,
103
104
  message: e.message,
104
105
  MEDIA_ERR_ABORTED: 1,
105
106
  MEDIA_ERR_NETWORK: 2,
106
107
  MEDIA_ERR_DECODE: 3,
107
108
  MEDIA_ERR_SRC_NOT_SUPPORTED: 4
108
- } : null, y = (e) => i(e, (e, t) => ({
109
+ } : null, ne = (e) => s(e, (e, t) => ({
109
110
  originalDetail: e instanceof CustomEvent ? e.detail : null,
110
- snapshot: g(t)
111
+ snapshot: y(t)
111
112
  })), b = async (e, t) => {
112
113
  switch (t) {
113
114
  case "play": return await e.play(), null;
@@ -129,13 +130,13 @@ var i = (e, t) => {
129
130
  try {
130
131
  e[t] = n;
131
132
  } catch {}
132
- return g(e);
133
+ return y(e);
133
134
  },
134
- events: y(e)
135
+ events: ne(e)
135
136
  }), S = (e, t) => {
136
137
  let n = new EventTarget();
137
- Object.defineProperty(n, f, { value: !0 }), Object.defineProperty(n, p, { value: e }), Object.defineProperty(n, m, { value: t });
138
- let r = o({
138
+ Object.defineProperty(n, h, { value: !0 }), Object.defineProperty(n, g, { value: e }), Object.defineProperty(n, _, { value: t });
139
+ let r = l({
139
140
  target: n,
140
141
  remoteEvents: t.events,
141
142
  unenrich: (t, n) => {
@@ -170,7 +171,7 @@ var i = (e, t) => {
170
171
  configurable: !0,
171
172
  enumerable: !0,
172
173
  get() {
173
- return v(e.error);
174
+ return te(e.error);
174
175
  }
175
176
  },
176
177
  play: {
@@ -206,7 +207,7 @@ var i = (e, t) => {
206
207
  value: 4
207
208
  }
208
209
  };
209
- for (let n of l) i[n] = {
210
+ for (let n of f) i[n] = {
210
211
  configurable: !0,
211
212
  enumerable: !0,
212
213
  get() {
@@ -218,113 +219,231 @@ var i = (e, t) => {
218
219
  }, () => {});
219
220
  }
220
221
  };
221
- for (let t of u) i[t] = {
222
+ for (let t of p) i[t] = {
222
223
  configurable: !0,
223
224
  enumerable: !0,
224
225
  get() {
225
226
  return e[t];
226
227
  }
227
228
  };
228
- for (let t of d) i[t] = {
229
+ for (let t of m) i[t] = {
229
230
  configurable: !0,
230
231
  enumerable: !0,
231
232
  get() {
232
- return _(e[t]);
233
+ return ee(e[t]);
233
234
  }
234
235
  };
235
236
  return Object.defineProperties(n, i), n;
236
- }, C = (e) => S(g(e), x(e)), w = (e) => typeof e == "object" && !!e && e[f] === !0, T = (e, r) => {
237
- let i = e;
237
+ }, C = (e) => S(y(e), x(e)), w = (e) => typeof e == "object" && !!e && e[h] === !0, T = (e, t) => {
238
+ let r = e;
238
239
  return {
239
- ...t,
240
- type: c,
241
- initialState: i[p],
242
- controller: n(i[m], r)
240
+ ...n,
241
+ type: d,
242
+ initialState: r[g],
243
+ controller: a(r[_], t)
243
244
  };
244
245
  }, E = (e, t) => {
245
- let n = r(e.controller, t);
246
+ let n = o(e.controller, t);
246
247
  return S({ ...e.initialState }, n);
247
- }, ee = (e) => [s, ...e], D = (e) => typeof e == "object" && !!e, te = "PermissionDeniedError", ne = (e) => e instanceof Error ? e.name === te : D(e) && e.name === "PermissionDeniedError", re = 3e4, ie = 50, ae = (e) => {
248
+ }, D = (e) => [u, ...e], re = "FKN_WEB_EXTENSION_MAIN_WORLD_CONTENT_SCRIPT_ENABLED_EVENT_KEY", ie = "fknExtension", O = r();
249
+ typeof document < "u" && document.addEventListener(re, () => {
250
+ O.dispatchEvent(new CustomEvent("statuschange", { detail: { enabled: k() } }));
251
+ });
252
+ var k = () => typeof document > "u" ? !1 : document.documentElement.dataset[ie] === "true", A = null, ae = (e) => {
253
+ A = e;
254
+ }, oe = 150, j = (e = 1e3) => new Promise((t, n) => {
255
+ if (k()) return t();
256
+ let r, i = (e) => {
257
+ clearTimeout(r), s.disconnect(), document.removeEventListener("readystatechange", c), e();
258
+ }, a = () => i(async () => {
259
+ if (A && (await A().catch(() => {}), k())) return t();
260
+ n(/* @__PURE__ */ Error("The FKN WebExtension is not installed, enabled or not exposed on this page."));
261
+ }), o = () => {
262
+ clearTimeout(r), r = setTimeout(() => k() ? i(t) : a(), oe);
263
+ }, s = new MutationObserver(() => {
264
+ k() && i(t);
265
+ }), c = () => {
266
+ document.readyState === "complete" && !k() && o();
267
+ };
268
+ if (r = setTimeout(a, e), s.observe(document.documentElement, {
269
+ attributes: !0,
270
+ attributeFilter: ["data-fkn-extension"]
271
+ }), document.addEventListener("readystatechange", c), document.readyState === "complete") return o();
272
+ k() && i(t);
273
+ }), se, M = new Proxy({}, { get: (e, t) => async (...e) => {
274
+ await j(), se ??= i({}, {
275
+ transport: window,
276
+ revivableModules: D
277
+ });
278
+ let n = (await se)[t];
279
+ return n(...e);
280
+ } }), ce = {
281
+ scope: "network.fetch",
282
+ category: "network",
283
+ severity: 0,
284
+ title: "Fetch data from other sites",
285
+ description: "Lets the app download public data from other websites directly, past the usual cross-origin limits."
286
+ }, le = {
287
+ scope: "network.fetchCredentialed",
288
+ category: "network",
289
+ severity: 3,
290
+ unsafe: !0,
291
+ title: "Fetch from other sites, signed in as you",
292
+ description: "Lets the app fetch other sites using your logged-in session cookies, so it can read data only you should see."
293
+ }, ue = {
294
+ scope: "network.fetchLocal",
295
+ category: "network",
296
+ severity: 3,
297
+ unsafe: !0,
298
+ title: "Access devices on your local network",
299
+ description: "Lets the app reach devices and services on your home or work network, which websites normally cannot touch."
300
+ }, de = (e) => {
301
+ let t = e.match(/^(\d+)\.(\d+)\.\d+\.\d+$/);
302
+ if (!t) return !1;
303
+ let [n, r] = [Number(t[1]), Number(t[2])];
304
+ return n === 10 || n === 127 || n === 0 || n === 169 && r === 254 || n === 172 && r >= 16 && r <= 31 || n === 192 && r === 168;
305
+ }, fe = (e) => {
306
+ let t;
307
+ try {
308
+ t = new URL(e);
309
+ } catch {
310
+ return !1;
311
+ }
312
+ let n = t.hostname.replace(/^\[|\]$/g, "").toLowerCase().replace(/\.$/, "");
313
+ 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);
314
+ }, pe = ["fkn.app", "fkn.dev"], N = (e) => {
315
+ let t;
316
+ try {
317
+ t = new URL(e);
318
+ } catch {
319
+ return !1;
320
+ }
321
+ if (t.protocol === "chrome-extension:" || t.protocol === "moz-extension:") return !0;
322
+ let n = t.hostname;
323
+ return pe.some((e) => n === e || n.endsWith(`.${e}`));
324
+ }, P = (e) => {
325
+ if (N(e)) throw Error("fetch: refusing to target the extension's own pages or FKN platform domains");
326
+ }, me = ["origin", "referer"], he = (e) => {
327
+ if (!e?.headers) return;
328
+ let t = new Headers(e.headers), n = me.map((e) => {
329
+ let n = t.get(e);
330
+ return n === null ? void 0 : [e, n];
331
+ }).filter((e) => e !== void 0);
332
+ return n.length ? n : void 0;
333
+ }, ge = async (e, t) => {
334
+ let n = new Request(e, t);
335
+ P(n.url);
336
+ let r = n.body ? await n.arrayBuffer() : null;
337
+ return M.proxyFetch({
338
+ url: n.url,
339
+ method: n.method,
340
+ headers: [...n.headers],
341
+ body: r,
342
+ credentials: t?.credentials === "include" ? "include" : "omit",
343
+ redirect: n.redirect,
344
+ unsafeHeaders: he(t),
345
+ reason: t?.reason,
346
+ signal: t?.signal ?? void 0
347
+ });
348
+ }, _e = {
349
+ scope: "network.readCookie",
350
+ category: "network",
351
+ severity: 3,
352
+ unsafe: !0,
353
+ title: "Read a site’s cookie",
354
+ description: "Lets the app read a named cookie from another site, which can include the login token only that site should see."
355
+ }, ve = { get: (e) => M.getCookie(e) }, ye = {
356
+ scope: "network.modifyRequestHeaders",
357
+ category: "network",
358
+ severity: 2,
359
+ unsafe: !0,
360
+ title: "Rewrite request headers to other sites",
361
+ description: "Lets the app set or remove headers (like Origin and Referer) on this page’s own requests to the listed sites."
362
+ }, be = (e) => M.setRequestHeaderRule(e), xe = (e) => M.removeRequestHeaderRule({ ruleId: e }), F = (e) => typeof e == "object" && !!e, Se = "PermissionDeniedError", Ce = (e) => e instanceof Error ? e.name === Se : F(e) && e.name === "PermissionDeniedError", I = "LocatorUnsupportedError", we = (e, t) => Object.assign(/* @__PURE__ */ Error(`Locator operation not supported${t ? ` on the ${t} backend` : ""}: ${e}`), {
363
+ name: I,
364
+ operation: e,
365
+ backend: t
366
+ }), Te = (e) => e instanceof Error ? e.name === I : typeof e == "object" && !!e && e.name === "LocatorUnsupportedError", Ee = 3e4, De = 50, Oe = (e) => {
248
367
  let t = e[e.length - 1];
249
368
  return typeof t == "object" && t ? t : void 0;
250
- }, oe = (e) => {
251
- let t = ae(e)?.timeout;
252
- return typeof t == "number" ? t : re;
253
- }, se = async (e, t, n, r, i) => {
369
+ }, ke = (e) => {
370
+ let t = Oe(e)?.timeout;
371
+ return typeof t == "number" ? t : Ee;
372
+ }, Ae = async (e, t, n, r, i) => {
254
373
  i && await i(t, n, r);
255
- let a = e, o = oe(r), s = Date.now() + o, c = /* @__PURE__ */ Error(`Locator timeout (${o}ms): ${n}`), { promise: l, reject: u } = Promise.withResolvers(), d = setTimeout(() => u(c), o), f = c;
374
+ let a = e, o = ke(r), s = Date.now() + o, c = /* @__PURE__ */ Error(`Locator timeout (${o}ms): ${n}`), { promise: l, reject: u } = Promise.withResolvers(), d = setTimeout(() => u(c), o), f = c;
256
375
  try {
257
376
  for (; Date.now() < s;) try {
258
377
  return await Promise.race([a(t, n, r), l]);
259
378
  } catch (e) {
260
379
  if (e === c) break;
261
- if (ne(e)) throw e;
380
+ if (Ce(e) || Te(e)) throw e;
262
381
  f = e;
263
382
  let t = s - Date.now();
264
383
  if (t <= 0) break;
265
- await new Promise((e) => setTimeout(e, Math.min(ie, t)));
384
+ await new Promise((e) => setTimeout(e, Math.min(De, t)));
266
385
  }
267
386
  } finally {
268
387
  clearTimeout(d);
269
388
  }
270
389
  throw f;
271
- }, ce = /* @__PURE__ */ e({
272
- render: () => de,
273
- resolve: () => ue,
274
- type: () => le
275
- }), le = "locator", ue = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(t)]), de = (e) => ({
390
+ }, L = /* @__PURE__ */ e({
391
+ render: () => Ne,
392
+ resolve: () => Me,
393
+ type: () => je
394
+ }), je = "locator", Me = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(t)]), Ne = (e) => ({
276
395
  fragment: typeof e == "string" ? e : "?",
277
396
  separator: "descend"
278
- }), fe = "FKN_WEB_EXTENSION_FRAME_ANNOUNCE_REQUEST_KEY", pe = typeof chrome < "u" && !!chrome.runtime?.id, me = (e) => D(e) && e.FKN_WEB_EXTENSION_FRAME_ANNOUNCE_KEY === !0 && typeof e.frameId == "string", O = /* @__PURE__ */ new WeakMap(), k = /* @__PURE__ */ new WeakMap(), A = /* @__PURE__ */ new Set(), he = (e) => (A.add(e), () => A.delete(e));
279
- typeof window < "u" && pe && window.addEventListener("message", (e) => {
280
- if (!me(e.data)) return;
397
+ }), Pe = "FKN_WEB_EXTENSION_FRAME_ANNOUNCE_REQUEST_KEY", Fe = typeof chrome < "u" && !!chrome.runtime?.id, Ie = (e) => F(e) && e.FKN_WEB_EXTENSION_FRAME_ANNOUNCE_KEY === !0 && typeof e.frameId == "string", R = /* @__PURE__ */ new WeakMap(), z = /* @__PURE__ */ new WeakMap(), B = /* @__PURE__ */ new Set(), Le = (e) => (B.add(e), () => B.delete(e));
398
+ typeof window < "u" && Fe && window.addEventListener("message", (e) => {
399
+ if (!Ie(e.data)) return;
281
400
  e.stopImmediatePropagation();
282
401
  let t = e.source;
283
402
  if (!t || typeof t != "object") return;
284
- let n = t, r = O.get(n), i = e.data.frameId;
285
- if (O.set(n, i), r) for (let e of A) e(r);
286
- let a = k.get(n);
403
+ let n = t, r = R.get(n), i = e.data.frameId;
404
+ if (R.set(n, i), r) for (let e of B) e(r);
405
+ let a = z.get(n);
287
406
  if (a) {
288
- k.delete(n);
407
+ z.delete(n);
289
408
  for (let e of a) e(i);
290
409
  }
291
410
  }, { capture: !0 });
292
- var ge = (e) => {
411
+ var Re = (e) => {
293
412
  let t = e.contentWindow;
294
413
  if (!t) return Promise.reject(/* @__PURE__ */ Error("frameLocator: <iframe> has no contentWindow"));
295
- let n = O.get(t);
414
+ let n = R.get(t);
296
415
  return n ? Promise.resolve(n) : new Promise((e) => {
297
- let n = k.get(t) ?? [];
298
- n.push(e), k.set(t, n), t.postMessage({ [fe]: !0 }, "*");
416
+ let n = z.get(t) ?? [];
417
+ n.push(e), z.set(t, n), t.postMessage({ [Pe]: !0 }, "*");
299
418
  });
300
- }, j = /* @__PURE__ */ e({
301
- render: () => be,
302
- resolve: () => ve,
303
- resolvePeer: () => ye,
304
- type: () => _e
305
- }), _e = "frameLocator", ve = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(t)]).filter((e) => e instanceof HTMLIFrameElement), ye = async ({ parts: e, selfIndex: t, resolveLocal: n }) => {
419
+ }, V = /* @__PURE__ */ e({
420
+ render: () => He,
421
+ resolve: () => Be,
422
+ resolvePeer: () => Ve,
423
+ type: () => ze
424
+ }), ze = "frameLocator", Be = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(t)]).filter((e) => e instanceof HTMLIFrameElement), Ve = async ({ parts: e, selfIndex: t, resolveLocal: n }) => {
306
425
  let r = n(e.slice(0, t + 1))[0];
307
426
  if (!r) throw Error("frameLocator: no <iframe> matched");
308
427
  if (!(r instanceof HTMLIFrameElement)) throw Error(`frameLocator: expected <iframe>, got <${r.tagName.toLowerCase()}>`);
309
- return ge(r);
310
- }, be = (e) => ({
428
+ return Re(r);
429
+ }, He = (e) => ({
311
430
  fragment: typeof e == "string" ? e : "?",
312
431
  separator: "frame-down"
313
- }), xe = /* @__PURE__ */ e({
314
- render: () => Te,
315
- resolve: () => Ce,
316
- resolvePeer: () => we,
317
- type: () => Se
318
- }), Se = "owner", Ce = (e) => {
432
+ }), Ue = /* @__PURE__ */ e({
433
+ render: () => qe,
434
+ resolve: () => Ge,
435
+ resolvePeer: () => Ke,
436
+ type: () => We
437
+ }), We = "owner", Ge = (e) => {
319
438
  throw Error("owner: must be processed by the executor as an upward pivot");
320
- }, we = async () => {
321
- let { backgroundResolvers: e } = await import("./background-DvQm1JHR.js"), t = await (await e).getParentFrameId();
439
+ }, Ke = async () => {
440
+ let { backgroundResolvers: e } = await import("./background-BVBbBOmL.js"), t = await (await e).getParentFrameId();
322
441
  if (!t) throw Error("owner: already at top frame");
323
442
  return t;
324
- }, Te = () => ({
443
+ }, qe = () => ({
325
444
  fragment: "",
326
445
  separator: "frame-up"
327
- }), Ee = class extends Error {
446
+ }), Je = class extends Error {
328
447
  reason;
329
448
  filename;
330
449
  line;
@@ -333,18 +452,18 @@ var ge = (e) => {
333
452
  constructor(e, t, n, r, i) {
334
453
  super(`${e}:${n}:${r}: ${t}`), this.reason = t, this.filename = e, this.line = n, this.column = r, this.source = i;
335
454
  }
336
- }, De = class {
455
+ }, Ye = class {
337
456
  start;
338
457
  end;
339
458
  source;
340
459
  constructor(e, t, n) {
341
460
  this.start = e, this.end = t, this.source = n;
342
461
  }
343
- }, M;
462
+ }, H;
344
463
  (function(e) {
345
464
  e.stylesheet = "stylesheet", e.rule = "rule", e.declaration = "declaration", e.comment = "comment", e.atRule = "at-rule", e.container = "container", e.charset = "charset", e.counterStyle = "counter-style", e.document = "document", e.customMedia = "custom-media", e.fontFace = "font-face", e.fontFeatureValues = "font-feature-values", e.host = "host", e.import = "import", e.keyframes = "keyframes", e.keyframe = "keyframe", e.layer = "layer", e.media = "media", e.namespace = "namespace", e.page = "page", e.pageMarginBox = "page-margin-box", e.positionTry = "position-try", e.property = "property", e.scope = "scope", e.startingStyle = "starting-style", e.supports = "supports", e.viewTransition = "view-transition";
346
- })(M ||= {});
347
- var N = (e, t, n) => {
465
+ })(H ||= {});
466
+ var U = (e, t, n) => {
348
467
  let r = n, i = 1e4;
349
468
  do {
350
469
  let n = t.map((t) => e.indexOf(t, r));
@@ -356,7 +475,7 @@ var N = (e, t, n) => {
356
475
  r = o + 2, i--;
357
476
  } while (i > 0);
358
477
  throw Error("Too many escaping");
359
- }, P = (e, t, n) => {
478
+ }, W = (e, t, n) => {
360
479
  let r = n, i = 1e4;
361
480
  do {
362
481
  let n = t.map((t) => e.indexOf(t, r));
@@ -370,21 +489,21 @@ var N = (e, t, n) => {
370
489
  break;
371
490
  case "(":
372
491
  {
373
- let t = P(e, [")"], o + 1);
492
+ let t = W(e, [")"], o + 1);
374
493
  if (t === -1) return -1;
375
494
  r = t + 1;
376
495
  }
377
496
  break;
378
497
  case "\"":
379
498
  {
380
- let t = N(e, ["\""], o + 1);
499
+ let t = U(e, ["\""], o + 1);
381
500
  if (t === -1) return -1;
382
501
  r = t + 1;
383
502
  }
384
503
  break;
385
504
  case "'":
386
505
  {
387
- let t = N(e, ["'"], o + 1);
506
+ let t = U(e, ["'"], o + 1);
388
507
  if (t === -1) return -1;
389
508
  r = t + 1;
390
509
  }
@@ -394,17 +513,17 @@ var N = (e, t, n) => {
394
513
  i--;
395
514
  } while (i > 0);
396
515
  throw Error("Too many escaping");
397
- }, F = /\/\*[^]*?(?:\*\/|$)/g;
398
- function I(e) {
516
+ }, G = /\/\*[^]*?(?:\*\/|$)/g;
517
+ function K(e) {
399
518
  return e ? e.trim() : "";
400
519
  }
401
- function L(e, t) {
520
+ function q(e, t) {
402
521
  let n = e && typeof e.type == "string", r = n ? e : t;
403
522
  for (let t in e) {
404
523
  let n = e[t];
405
524
  Array.isArray(n) ? n.forEach((e) => {
406
- L(e, r);
407
- }) : n && typeof n == "object" && L(n, r);
525
+ q(e, r);
526
+ }) : n && typeof n == "object" && q(n, r);
408
527
  }
409
528
  return n && Object.defineProperty(e, "parent", {
410
529
  configurable: !0,
@@ -413,7 +532,7 @@ function L(e, t) {
413
532
  value: t || null
414
533
  }), e;
415
534
  }
416
- var Oe = class {
535
+ var Xe = class {
417
536
  level = 0;
418
537
  indentation = " ";
419
538
  compress = !1;
@@ -428,33 +547,33 @@ var Oe = class {
428
547
  }
429
548
  visit(e) {
430
549
  switch (e.type) {
431
- case M.stylesheet: return this.stylesheet(e);
432
- case M.rule: return this.rule(e);
433
- case M.declaration: return this.declaration(e);
434
- case M.comment: return this.comment(e);
435
- case M.container: return this.container(e);
436
- case M.charset: return this.charset(e);
437
- case M.counterStyle: return this.counterStyle(e);
438
- case M.document: return this.document(e);
439
- case M.customMedia: return this.customMedia(e);
440
- case M.fontFace: return this.fontFace(e);
441
- case M.fontFeatureValues: return this.fontFeatureValues(e);
442
- case M.host: return this.host(e);
443
- case M.import: return this.import(e);
444
- case M.keyframes: return this.keyframes(e);
445
- case M.keyframe: return this.keyframe(e);
446
- case M.layer: return this.layer(e);
447
- case M.media: return this.media(e);
448
- case M.namespace: return this.namespace(e);
449
- case M.page: return this.page(e);
450
- case M.pageMarginBox: return this.pageMarginBox(e);
451
- case M.positionTry: return this.positionTry(e);
452
- case M.property: return this.property(e);
453
- case M.scope: return this.scope(e);
454
- case M.startingStyle: return this.startingStyle(e);
455
- case M.supports: return this.supports(e);
456
- case M.viewTransition: return this.viewTransition(e);
457
- case M.atRule: return this.genericAtRule(e);
550
+ case H.stylesheet: return this.stylesheet(e);
551
+ case H.rule: return this.rule(e);
552
+ case H.declaration: return this.declaration(e);
553
+ case H.comment: return this.comment(e);
554
+ case H.container: return this.container(e);
555
+ case H.charset: return this.charset(e);
556
+ case H.counterStyle: return this.counterStyle(e);
557
+ case H.document: return this.document(e);
558
+ case H.customMedia: return this.customMedia(e);
559
+ case H.fontFace: return this.fontFace(e);
560
+ case H.fontFeatureValues: return this.fontFeatureValues(e);
561
+ case H.host: return this.host(e);
562
+ case H.import: return this.import(e);
563
+ case H.keyframes: return this.keyframes(e);
564
+ case H.keyframe: return this.keyframe(e);
565
+ case H.layer: return this.layer(e);
566
+ case H.media: return this.media(e);
567
+ case H.namespace: return this.namespace(e);
568
+ case H.page: return this.page(e);
569
+ case H.pageMarginBox: return this.pageMarginBox(e);
570
+ case H.positionTry: return this.positionTry(e);
571
+ case H.property: return this.property(e);
572
+ case H.scope: return this.scope(e);
573
+ case H.startingStyle: return this.startingStyle(e);
574
+ case H.supports: return this.supports(e);
575
+ case H.viewTransition: return this.viewTransition(e);
576
+ case H.atRule: return this.genericAtRule(e);
458
577
  }
459
578
  }
460
579
  mapVisit(e, t) {
@@ -550,7 +669,7 @@ var Oe = class {
550
669
  let t = e.prelude ? ` ${e.prelude}` : "";
551
670
  if (this.compress) return this.emit(`@${e.name}${t}`, e.position) + (e.rules ? this.emit("{") + this.mapVisit(e.rules) + this.emit("}") : ";");
552
671
  if (!e.rules) return this.emit(`${this.indent()}@${e.name}${t};`, e.position);
553
- let n = e.rules.some((e) => e.type !== M.declaration && e.type !== M.comment), r = n ? "\n\n" : "\n";
672
+ let n = e.rules.some((e) => e.type !== H.declaration && e.type !== H.comment), r = n ? "\n\n" : "\n";
554
673
  return this.emit(`${this.indent()}@${e.name}${t}`, e.position) + this.emit(n ? ` {\n${this.indent(1)}` : " {\n") + this.emit(n ? "" : this.indent(1)) + this.mapVisit(e.rules, r) + this.emit(n ? `\n${this.indent(-1)}${this.indent()}}` : `${this.indent(-1)}\n${this.indent()}}`);
555
674
  }
556
675
  rule(e) {
@@ -563,7 +682,7 @@ var Oe = class {
563
682
  declaration(e) {
564
683
  return this.compress ? this.emit(`${e.property}:${e.value}`, e.position) + this.emit(";") : e.property === "grid-template-areas" ? this.emit(this.indent()) + this.emit(e.property + ": " + e.value.split("\n").join("\n".padEnd(22) + this.indent()), e.position) + this.emit(";") : this.emit(this.indent()) + this.emit(`${e.property}: ${e.value}`, e.position) + this.emit(";");
565
684
  }
566
- }, ke = (e, t) => {
685
+ }, Ze = (e, t) => {
567
686
  t ||= {};
568
687
  let n = 1, r = 1;
569
688
  function i() {
@@ -571,14 +690,14 @@ var Oe = class {
571
690
  line: n,
572
691
  column: r
573
692
  };
574
- return (i) => (i.position = new De(e, {
693
+ return (i) => (i.position = new Ye(e, {
575
694
  line: n,
576
695
  column: r
577
696
  }, t?.source || ""), u(), i);
578
697
  }
579
698
  let a = [];
580
699
  function o(i) {
581
- let o = new Ee(t?.source || "", i, n, r, e);
700
+ let o = new Je(t?.source || "", i, n, r, e);
582
701
  if (!t?.silent) throw o;
583
702
  a.push(o);
584
703
  }
@@ -614,36 +733,36 @@ var Oe = class {
614
733
  if (e.charAt(0) !== "/" || e.charAt(1) !== "*") return;
615
734
  let n = /^\/\*[^]*?\*\//.exec(e);
616
735
  return n ? (l(n), t({
617
- type: M.comment,
736
+ type: H.comment,
618
737
  comment: n[0].slice(2, -2)
619
738
  })) : o("End of comment missing");
620
739
  }
621
740
  function p() {
622
- let t = P(e, ["{"]);
741
+ let t = W(e, ["{"]);
623
742
  if (t === -1 || t === 0) return;
624
743
  let n = e.substring(0, t);
625
744
  return l([n]), ((e, t) => {
626
745
  let n = [], r = 0;
627
746
  for (; r < e.length;) {
628
- let i = P(e, t, r);
747
+ let i = W(e, t, r);
629
748
  if (i === -1) return n.push(e.substring(r)), n;
630
749
  n.push(e.substring(r, i)), r = i + 1;
631
750
  }
632
751
  return n;
633
- })(I(n).replace(F, ""), [","]).map((e) => I(e));
752
+ })(K(n).replace(G, ""), [","]).map((e) => K(e));
634
753
  }
635
754
  function m() {
636
755
  let t = i(), n = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/.exec(e);
637
756
  if (!n) return;
638
757
  l(n);
639
- let r = I(n[0]), a = /^:\s*/.exec(e);
758
+ let r = K(n[0]), a = /^:\s*/.exec(e);
640
759
  if (!a) return o("property missing ':'");
641
760
  l(a);
642
- let s = "", c = P(e, [";", "}"]);
643
- c !== -1 && (s = e.substring(0, c), l([s]), s = I(s).replace(F, ""));
761
+ let s = "", c = W(e, [";", "}"]);
762
+ c !== -1 && (s = e.substring(0, c), l([s]), s = K(s).replace(G, ""));
644
763
  let u = t({
645
- type: M.declaration,
646
- property: r.replace(F, ""),
764
+ type: H.declaration,
765
+ property: r.replace(G, ""),
647
766
  value: s
648
767
  }), d = /^[;\s]*/.exec(e);
649
768
  return d && l(d), u;
@@ -662,9 +781,9 @@ var Oe = class {
662
781
  return c() ? n : o("missing '}'");
663
782
  }
664
783
  function g() {
665
- let t = P(e, ["{"]);
784
+ let t = W(e, ["{"]);
666
785
  if (t === -1) return !1;
667
- let n = P(e, [";"]), r = P(e, ["}"]);
786
+ let n = W(e, [";"]), r = W(e, ["}"]);
668
787
  return !(n !== -1 && n < t) && !(r !== -1 && r < t);
669
788
  }
670
789
  function _() {
@@ -672,14 +791,14 @@ var Oe = class {
672
791
  if (!s()) return o("missing '{'");
673
792
  for (d(n); e.length && e.charAt(0) !== "}";) {
674
793
  if (e.charAt(0) === "@") {
675
- let e = T();
794
+ let e = S();
676
795
  if (e) {
677
796
  n.push(e), d(n);
678
797
  continue;
679
798
  }
680
799
  }
681
800
  if (g()) {
682
- let e = E();
801
+ let e = C();
683
802
  if (e) {
684
803
  n.push(e), d(n);
685
804
  continue;
@@ -704,14 +823,14 @@ var Oe = class {
704
823
  let n = [];
705
824
  for (u(), d(n); e.length && e.charAt(0) !== "}";) {
706
825
  if (e.charAt(0) === "@") {
707
- let e = T();
826
+ let e = S();
708
827
  if (e) {
709
828
  n.push(e), d(n);
710
829
  continue;
711
830
  }
712
831
  }
713
832
  if (g()) {
714
- let e = E();
833
+ let e = C();
715
834
  if (e) {
716
835
  n.push(e), d(n);
717
836
  continue;
@@ -741,12 +860,12 @@ var Oe = class {
741
860
  i && l(i), r = /^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/.exec(e);
742
861
  }
743
862
  if (t.length) return n({
744
- type: M.keyframe,
863
+ type: H.keyframe,
745
864
  values: t,
746
865
  declarations: h() || []
747
866
  });
748
867
  }
749
- let b = RegExp(`^@(${[
868
+ let ee = RegExp(`^@(${[
750
869
  "top-left-corner",
751
870
  "top-left",
752
871
  "top-center",
@@ -763,8 +882,8 @@ var Oe = class {
763
882
  "right-top",
764
883
  "right-middle",
765
884
  "right-bottom"
766
- ].join("|")})(?![\\w-])\\s*`), x = w("import"), S = w("charset"), C = w("namespace");
767
- function w(t) {
885
+ ].join("|")})(?![\\w-])\\s*`), te = x("import"), ne = x("charset"), b = x("namespace");
886
+ function x(t) {
768
887
  let n = RegExp("^@" + t + "\\s*((?::?[^;'\"]|\"(?:\\\\\"|[^\"])*?\"|'(?:\\\\'|[^'])*?')+)(?:;|$)");
769
888
  return () => {
770
889
  let r = i(), a = n.exec(e);
@@ -773,7 +892,7 @@ var Oe = class {
773
892
  return s[t] = o[1].trim(), r(s);
774
893
  };
775
894
  }
776
- function T() {
895
+ function S() {
777
896
  if (e[0] === "@") return function() {
778
897
  let t = i(), n = /^@([-\w]+)?keyframes\s*/.exec(e);
779
898
  if (!n) return;
@@ -784,7 +903,7 @@ var Oe = class {
784
903
  let f = d(), p = y();
785
904
  for (; p;) f.push(p), f = f.concat(d()), p = y();
786
905
  return c() ? t({
787
- type: M.keyframes,
906
+ type: H.keyframes,
788
907
  name: u,
789
908
  vendor: r,
790
909
  keyframes: f
@@ -792,11 +911,11 @@ var Oe = class {
792
911
  }() || function() {
793
912
  let t = i(), n = /^@media *([^{]+)/.exec(e);
794
913
  if (!n) return;
795
- let r = I(l(n)[1]);
914
+ let r = K(l(n)[1]);
796
915
  if (!s()) return o("@media missing '{'");
797
916
  let a = v();
798
917
  return c() ? t({
799
- type: M.media,
918
+ type: H.media,
800
919
  media: r,
801
920
  rules: a
802
921
  }) : o("@media missing '}'");
@@ -805,29 +924,29 @@ var Oe = class {
805
924
  if (!n) return;
806
925
  let r = l(n);
807
926
  return t({
808
- type: M.customMedia,
809
- name: I(r[1]),
810
- media: I(r[2])
927
+ type: H.customMedia,
928
+ name: K(r[1]),
929
+ media: K(r[2])
811
930
  });
812
931
  }() || function() {
813
932
  let t = i(), n = /^@supports *([^{]+)/.exec(e);
814
933
  if (!n) return;
815
- let r = I(l(n)[1]);
934
+ let r = K(l(n)[1]);
816
935
  if (!s()) return o("@supports missing '{'");
817
936
  let a = v();
818
937
  return c() ? t({
819
- type: M.supports,
938
+ type: H.supports,
820
939
  supports: r,
821
940
  rules: a
822
941
  }) : o("@supports missing '}'");
823
- }() || x() || S() || C() || function() {
942
+ }() || te() || ne() || b() || function() {
824
943
  let t = i(), n = /^@([-\w]+)?document *([^{]+)/.exec(e);
825
944
  if (!n) return;
826
- let r = l(n), a = I(r[1]), u = I(r[2]);
945
+ let r = l(n), a = K(r[1]), u = K(r[2]);
827
946
  if (!s()) return o("@document missing '{'");
828
947
  let d = v();
829
948
  return c() ? t({
830
- type: M.document,
949
+ type: H.document,
831
950
  document: u,
832
951
  vendor: a,
833
952
  rules: d
@@ -841,7 +960,7 @@ var Oe = class {
841
960
  let a = [];
842
961
  for (d(a); e.length && e.charAt(0) !== "}";) {
843
962
  if (e.charAt(0) === "@") {
844
- let e = T();
963
+ let e = S();
845
964
  if (e) {
846
965
  a.push(e), d(a);
847
966
  continue;
@@ -852,7 +971,7 @@ var Oe = class {
852
971
  a.push(t), d(a);
853
972
  }
854
973
  return c() ? t({
855
- type: M.page,
974
+ type: H.page,
856
975
  selectors: r,
857
976
  declarations: a
858
977
  }) : o("@page missing '}'");
@@ -862,7 +981,7 @@ var Oe = class {
862
981
  if (l(n), !s()) return o("@host missing '{'");
863
982
  let r = v();
864
983
  return c() ? t({
865
- type: M.host,
984
+ type: H.host,
866
985
  rules: r
867
986
  }) : o("@host missing '}'");
868
987
  }() || function() {
@@ -872,28 +991,28 @@ var Oe = class {
872
991
  let r = d(), a = m();
873
992
  for (; a;) r.push(a), r = r.concat(d()), a = m();
874
993
  return c() ? t({
875
- type: M.fontFace,
994
+ type: H.fontFace,
876
995
  declarations: r
877
996
  }) : o("@font-face missing '}'");
878
997
  }() || function() {
879
998
  let t = i(), n = /^@font-feature-values\s+([^{]+)/.exec(e);
880
999
  if (!n) return;
881
- let r = I(l(n)[1]);
1000
+ let r = K(l(n)[1]);
882
1001
  if (!s()) return o("@font-feature-values missing '{'");
883
1002
  let a = v();
884
1003
  return c() ? t({
885
- type: M.fontFeatureValues,
1004
+ type: H.fontFeatureValues,
886
1005
  fontFamily: r,
887
1006
  rules: a
888
1007
  }) : o("@font-feature-values missing '}'");
889
1008
  }() || function() {
890
1009
  let t = i(), n = /^@container *([^{]+)/.exec(e);
891
1010
  if (!n) return;
892
- let r = I(l(n)[1]);
1011
+ let r = K(l(n)[1]);
893
1012
  if (!s()) return o("@container missing '{'");
894
1013
  let a = v();
895
1014
  return c() ? t({
896
- type: M.container,
1015
+ type: H.container,
897
1016
  container: r,
898
1017
  rules: a
899
1018
  }) : o("@container missing '}'");
@@ -903,23 +1022,23 @@ var Oe = class {
903
1022
  if (l(n), !s()) return o("@starting-style missing '{'");
904
1023
  let r = v();
905
1024
  return c() ? t({
906
- type: M.startingStyle,
1025
+ type: H.startingStyle,
907
1026
  rules: r
908
1027
  }) : o("@starting-style missing '}'");
909
1028
  }() || function() {
910
1029
  let t = i(), n = /^@layer *([^{;@]+)/.exec(e);
911
1030
  if (!n) return;
912
- let r = I(l(n)[1]);
1031
+ let r = K(l(n)[1]);
913
1032
  if (!s()) {
914
1033
  let n = /^[;\s]*/.exec(e);
915
1034
  return n && l(n), t({
916
- type: M.layer,
1035
+ type: H.layer,
917
1036
  layer: r
918
1037
  });
919
1038
  }
920
1039
  let a = v();
921
1040
  return c() ? t({
922
- type: M.layer,
1041
+ type: H.layer,
923
1042
  layer: r,
924
1043
  rules: a
925
1044
  }) : o("@layer missing '}'");
@@ -931,7 +1050,7 @@ var Oe = class {
931
1050
  let a = d(), u = m();
932
1051
  for (; u;) a.push(u), a = a.concat(d()), u = m();
933
1052
  return c() ? t({
934
- type: M.property,
1053
+ type: H.property,
935
1054
  name: r,
936
1055
  declarations: a
937
1056
  }) : o("@property missing '}'");
@@ -943,18 +1062,18 @@ var Oe = class {
943
1062
  let a = d(), u = m();
944
1063
  for (; u;) a.push(u), a = a.concat(d()), u = m();
945
1064
  return c() ? t({
946
- type: M.counterStyle,
1065
+ type: H.counterStyle,
947
1066
  name: r,
948
1067
  declarations: a
949
1068
  }) : o("@counter-style missing '}'");
950
1069
  }() || function() {
951
1070
  let t = i(), n = /^@scope\s*([^{]*)/.exec(e);
952
1071
  if (!n) return;
953
- let r = I(l(n)[1]);
1072
+ let r = K(l(n)[1]);
954
1073
  if (!s()) return o("@scope missing '{'");
955
1074
  let a = v();
956
1075
  return c() ? t({
957
- type: M.scope,
1076
+ type: H.scope,
958
1077
  scope: r,
959
1078
  rules: a
960
1079
  }) : o("@scope missing '}'");
@@ -965,7 +1084,7 @@ var Oe = class {
965
1084
  let r = d(), a = m();
966
1085
  for (; a;) r.push(a), r = r.concat(d()), a = m();
967
1086
  return c() ? t({
968
- type: M.viewTransition,
1087
+ type: H.viewTransition,
969
1088
  declarations: r
970
1089
  }) : o("@view-transition missing '}'");
971
1090
  }() || function() {
@@ -976,30 +1095,30 @@ var Oe = class {
976
1095
  let a = d(), u = m();
977
1096
  for (; u;) a.push(u), a = a.concat(d()), u = m();
978
1097
  return c() ? t({
979
- type: M.positionTry,
1098
+ type: H.positionTry,
980
1099
  name: r,
981
1100
  declarations: a
982
1101
  }) : o("@position-try missing '}'");
983
1102
  }() || function() {
984
- let t = i(), n = b.exec(e);
1103
+ let t = i(), n = ee.exec(e);
985
1104
  if (!n) return;
986
1105
  let r = l(n)[1];
987
1106
  if (!s()) return o(`@${r} missing '{'`);
988
1107
  let a = d(), u = m();
989
1108
  for (; u;) a.push(u), a = a.concat(d()), u = m();
990
1109
  return c() ? t({
991
- type: M.pageMarginBox,
1110
+ type: H.pageMarginBox,
992
1111
  name: r,
993
1112
  declarations: a
994
1113
  }) : o(`@${r} missing '}'`);
995
1114
  }() || function() {
996
1115
  let t = i(), n = /^@([-\w]+)\s*/.exec(e);
997
1116
  if (!n) return;
998
- let r = l(n)[1], a = "", u = P(e, ["{", ";"]);
999
- if (u !== -1 && u > 0 && (a = I(e.substring(0, u)), l([e.substring(0, u)])), s()) {
1117
+ let r = l(n)[1], a = "", u = W(e, ["{", ";"]);
1118
+ if (u !== -1 && u > 0 && (a = K(e.substring(0, u)), l([e.substring(0, u)])), s()) {
1000
1119
  let e = v();
1001
1120
  return c() ? t({
1002
- type: M.atRule,
1121
+ type: H.atRule,
1003
1122
  name: r,
1004
1123
  prelude: a,
1005
1124
  rules: e
@@ -1007,21 +1126,21 @@ var Oe = class {
1007
1126
  }
1008
1127
  let d = /^[;\s]*/.exec(e);
1009
1128
  return d && l(d), t({
1010
- type: M.atRule,
1129
+ type: H.atRule,
1011
1130
  name: r,
1012
1131
  prelude: a
1013
1132
  });
1014
1133
  }();
1015
1134
  }
1016
- function E() {
1135
+ function C() {
1017
1136
  let e = i(), t = p();
1018
1137
  return t ? (d(), e({
1019
- type: M.rule,
1138
+ type: H.rule,
1020
1139
  selectors: t,
1021
1140
  declarations: _() || []
1022
1141
  })) : o("selector missing");
1023
1142
  }
1024
- return L(function() {
1143
+ return q(function() {
1025
1144
  let n = function() {
1026
1145
  let n, r = [];
1027
1146
  for (u(), d(r); e.length;) {
@@ -1032,7 +1151,7 @@ var Oe = class {
1032
1151
  }
1033
1152
  break;
1034
1153
  }
1035
- if (n = T() || E(), !n) {
1154
+ if (n = S() || C(), !n) {
1036
1155
  if (t?.silent) {
1037
1156
  l([e.charAt(0)]), u(), d(r);
1038
1157
  continue;
@@ -1044,7 +1163,7 @@ var Oe = class {
1044
1163
  return r;
1045
1164
  }();
1046
1165
  return {
1047
- type: M.stylesheet,
1166
+ type: H.stylesheet,
1048
1167
  stylesheet: {
1049
1168
  source: t?.source,
1050
1169
  rules: n,
@@ -1052,79 +1171,79 @@ var Oe = class {
1052
1171
  }
1053
1172
  };
1054
1173
  }());
1055
- }, Ae = (e, t) => new Oe(t || {}).compile(e), je = /* @__PURE__ */ e({
1056
- appearPermission: () => R,
1057
- appearUnsafePermission: () => z,
1058
- permission: () => Ne,
1059
- resolve: () => Re,
1060
- setInjectedStylesDisabled: () => W,
1061
- type: () => Me
1062
- }), Me = "addStyleTag", R = {
1174
+ }, Qe = (e, t) => new Xe(t || {}).compile(e), $e = /* @__PURE__ */ e({
1175
+ appearPermission: () => tt,
1176
+ appearUnsafePermission: () => nt,
1177
+ permission: () => rt,
1178
+ resolve: () => ft,
1179
+ setInjectedStylesDisabled: () => dt,
1180
+ type: () => et
1181
+ }), et = "addStyleTag", tt = {
1063
1182
  scope: "media.appear",
1064
1183
  category: "media",
1065
1184
  severity: 0,
1066
1185
  title: "Change page appearance",
1067
1186
  description: "Lets the app restyle parts of the page (safely filtered)."
1068
- }, z = {
1187
+ }, nt = {
1069
1188
  scope: "media.appearU",
1070
1189
  category: "media",
1071
1190
  severity: 2,
1072
1191
  unsafe: !0,
1073
1192
  title: "Change page appearance (unsafe)",
1074
1193
  description: "Lets the app restyle the page WITHOUT safety filtering. Could be used to leak data over the network."
1075
- }, Ne = (e) => e?.noSanitize ? z : R, Pe = /(?:^|[^\w-])(?:url|image|image-set|cross-fade|paint|element|expression)\s*\(/i, Fe = (e) => e.replace(/\\([0-9a-fA-F]{1,6})\s?/g, (e, t) => String.fromCodePoint(Number.parseInt(t, 16))).replace(/\\(.)/g, "$1"), B = (e) => !Pe.test(Fe(e.value)), V = (e) => {
1194
+ }, rt = (e) => e?.noSanitize ? nt : tt, it = /(?:^|[^\w-])(?:url|image|image-set|cross-fade|paint|element|expression)\s*\(/i, at = (e) => e.replace(/\\([0-9a-fA-F]{1,6})\s?/g, (e, t) => String.fromCodePoint(Number.parseInt(t, 16))).replace(/\\(.)/g, "$1"), ot = (e) => !it.test(at(e.value)), J = (e) => {
1076
1195
  let t = [];
1077
1196
  for (let n of e) switch (n.type) {
1078
- case M.import:
1079
- case M.fontFace:
1080
- case M.namespace:
1081
- case M.charset:
1082
- case M.document:
1083
- case M.comment: continue;
1084
- case M.rule:
1085
- case M.page:
1197
+ case H.import:
1198
+ case H.fontFace:
1199
+ case H.namespace:
1200
+ case H.charset:
1201
+ case H.document:
1202
+ case H.comment: continue;
1203
+ case H.rule:
1204
+ case H.page:
1086
1205
  t.push({
1087
1206
  ...n,
1088
- declarations: n.declarations.filter((e) => e.type !== M.declaration || B(e))
1207
+ declarations: n.declarations.filter((e) => e.type !== H.declaration || ot(e))
1089
1208
  });
1090
1209
  continue;
1091
- case M.media:
1092
- case M.supports:
1093
- case M.container:
1094
- case M.host:
1095
- case M.startingStyle:
1210
+ case H.media:
1211
+ case H.supports:
1212
+ case H.container:
1213
+ case H.host:
1214
+ case H.startingStyle:
1096
1215
  t.push({
1097
1216
  ...n,
1098
- rules: V(n.rules)
1217
+ rules: J(n.rules)
1099
1218
  });
1100
1219
  continue;
1101
- case M.layer:
1220
+ case H.layer:
1102
1221
  t.push({
1103
1222
  ...n,
1104
- rules: n.rules ? V(n.rules) : void 0
1223
+ rules: n.rules ? J(n.rules) : void 0
1105
1224
  });
1106
1225
  continue;
1107
- case M.keyframes:
1226
+ case H.keyframes:
1108
1227
  t.push({
1109
1228
  ...n,
1110
- keyframes: n.keyframes.map((e) => e.type === M.keyframe ? {
1229
+ keyframes: n.keyframes.map((e) => e.type === H.keyframe ? {
1111
1230
  ...e,
1112
- declarations: e.declarations.filter((e) => e.type !== M.declaration || B(e))
1231
+ declarations: e.declarations.filter((e) => e.type !== H.declaration || ot(e))
1113
1232
  } : e)
1114
1233
  });
1115
1234
  continue;
1116
1235
  default: continue;
1117
1236
  }
1118
1237
  return t;
1119
- }, Ie = (e) => {
1238
+ }, st = (e) => {
1120
1239
  let t;
1121
1240
  try {
1122
- t = ke(e, { silent: !0 });
1241
+ t = Ze(e, { silent: !0 });
1123
1242
  } catch {
1124
1243
  return "";
1125
1244
  }
1126
- return t.stylesheet.rules = V(t.stylesheet.rules), Ae(t);
1127
- }, Le = (e) => {
1245
+ return t.stylesheet.rules = J(t.stylesheet.rules), Qe(t);
1246
+ }, ct = (e) => {
1128
1247
  let t = () => {
1129
1248
  e.parentNode || (document.head ?? document.documentElement).appendChild(e);
1130
1249
  };
@@ -1139,37 +1258,37 @@ var Oe = class {
1139
1258
  childList: !0,
1140
1259
  subtree: !0
1141
1260
  }), window.addEventListener("load", () => n.disconnect(), { once: !0 });
1142
- }, H = /* @__PURE__ */ new Set(), U = !1, W = (e) => {
1143
- U = e;
1144
- for (let t of H) t.disabled = e;
1145
- }, Re = async (e, t) => {
1261
+ }, lt = /* @__PURE__ */ new Set(), ut = !1, dt = (e) => {
1262
+ ut = e;
1263
+ for (let t of lt) t.disabled = e;
1264
+ }, ft = async (e, t) => {
1146
1265
  let n = document.createElement("style");
1147
- n.textContent = t.noSanitize ? t.content : Ie(t.content);
1266
+ n.textContent = t.noSanitize ? t.content : st(t.content);
1148
1267
  try {
1149
- Le(n);
1268
+ ct(n);
1150
1269
  } catch (e) {
1151
1270
  console.error(e);
1152
1271
  }
1153
- H.add(n), U && (n.disabled = !0);
1154
- }, G = "frameLocator", K = [
1272
+ lt.add(n), ut && (n.disabled = !0);
1273
+ }, Y = "frameLocator", X = [
1155
1274
  {
1156
- ...ce,
1275
+ ...L,
1157
1276
  nextLocatorType: "locator"
1158
1277
  },
1159
- j,
1160
- xe
1161
- ], q = [je], ze = {
1162
- type: G,
1163
- selectorModules: K,
1164
- operationModules: q
1165
- }, J = Y({
1166
- ownType: G,
1167
- selectorModules: K,
1168
- operationModules: q
1278
+ V,
1279
+ Ue
1280
+ ], pt = [$e], mt = {
1281
+ type: Y,
1282
+ selectorModules: X,
1283
+ operationModules: pt
1284
+ }, ht = gt({
1285
+ ownType: Y,
1286
+ selectorModules: X,
1287
+ operationModules: pt
1169
1288
  });
1170
1289
  //#endregion
1171
1290
  //#region node_modules/@mfkn/web-extension/lib/content-script/resolvers/locators/factory.js
1172
- function Y(e) {
1291
+ function gt(e) {
1173
1292
  return (t, n, r = []) => ({
1174
1293
  ...Object.fromEntries(e.selectorModules.map((i) => [i.type, (...a) => {
1175
1294
  let o = [...r, {
@@ -1177,55 +1296,55 @@ function Y(e) {
1177
1296
  type: i.type,
1178
1297
  args: a
1179
1298
  }];
1180
- return (i.nextLocatorType ?? e.ownType) === "locator" ? Gt(t, n, o) : J(t, n, o);
1299
+ return (i.nextLocatorType ?? e.ownType) === "locator" ? Tn(t, n, o) : ht(t, n, o);
1181
1300
  }])),
1182
- ...Object.fromEntries(e.operationModules.map(({ type: e }) => [e, (...i) => se(t, r, e, i, n)])),
1301
+ ...Object.fromEntries(e.operationModules.map(({ type: e }) => [e, (...i) => Ae(t, r, e, i, n)])),
1183
1302
  ensure: (e, t = {}) => n ? n(r, e, [t]) : Promise.resolve()
1184
1303
  });
1185
1304
  }
1186
1305
  //#endregion
1187
1306
  //#region node_modules/@mfkn/web-extension/lib/content-script/resolvers/locators/selectors/get-by-role.js
1188
- var Be = /* @__PURE__ */ e({
1189
- render: () => Ue,
1190
- resolve: () => He,
1191
- type: () => Ve
1192
- }), Ve = "getByRole", He = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[role="${CSS.escape(t)}"]`)]), Ue = (e) => ({ fragment: typeof e == "string" ? `[role="${e.replaceAll("\"", "\\\"")}"]` : "[role]" }), We = /* @__PURE__ */ e({
1193
- render: () => qe,
1194
- resolve: () => Ke,
1195
- type: () => Ge
1196
- }), Ge = "getByText", Ke = (e, t) => e.elements.flatMap((e) => [e, ...e.querySelectorAll("*")]).filter((e) => e.textContent?.includes(t)), qe = (e) => ({ fragment: typeof e == "string" ? `:has-text("${e.replaceAll("\"", "\\\"")}")` : ":has-text(...)" }), Je = /* @__PURE__ */ e({
1197
- render: () => Ze,
1198
- resolve: () => Xe,
1199
- type: () => Ye
1200
- }), Ye = "getByTestId", Xe = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[data-testid="${CSS.escape(t)}"]`)]), Ze = (e) => ({ fragment: typeof e == "string" ? `[data-testid="${e.replaceAll("\"", "\\\"")}"]` : "[data-testid]" }), Qe = /* @__PURE__ */ e({
1201
- render: () => tt,
1202
- resolve: () => et,
1203
- type: () => $e
1204
- }), $e = "first", et = (e) => e.elements.slice(0, 1), tt = () => ({ fragment: ":first" }), nt = /* @__PURE__ */ e({
1205
- render: () => it,
1206
- resolve: () => rt,
1307
+ var _t = /* @__PURE__ */ e({
1308
+ render: () => bt,
1309
+ resolve: () => yt,
1310
+ type: () => vt
1311
+ }), vt = "getByRole", yt = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[role="${CSS.escape(t)}"]`)]), bt = (e) => ({ fragment: typeof e == "string" ? `[role="${e.replaceAll("\"", "\\\"")}"]` : "[role]" }), xt = /* @__PURE__ */ e({
1312
+ render: () => wt,
1313
+ resolve: () => Ct,
1314
+ type: () => St
1315
+ }), St = "getByText", Ct = (e, t) => e.elements.flatMap((e) => [e, ...e.querySelectorAll("*")]).filter((e) => e.textContent?.includes(t)), wt = (e) => ({ fragment: typeof e == "string" ? `:has-text("${e.replaceAll("\"", "\\\"")}")` : ":has-text(...)" }), Tt = /* @__PURE__ */ e({
1316
+ render: () => Ot,
1317
+ resolve: () => Dt,
1318
+ type: () => Et
1319
+ }), Et = "getByTestId", Dt = (e, t) => e.elements.flatMap((e) => [...e.querySelectorAll(`[data-testid="${CSS.escape(t)}"]`)]), Ot = (e) => ({ fragment: typeof e == "string" ? `[data-testid="${e.replaceAll("\"", "\\\"")}"]` : "[data-testid]" }), kt = /* @__PURE__ */ e({
1320
+ render: () => Mt,
1321
+ resolve: () => jt,
1322
+ type: () => At
1323
+ }), At = "first", jt = (e) => e.elements.slice(0, 1), Mt = () => ({ fragment: ":first" }), Nt = /* @__PURE__ */ e({
1324
+ render: () => Ft,
1325
+ resolve: () => Pt,
1207
1326
  type: () => "nth"
1208
- }), rt = (e, t) => {
1327
+ }), Pt = (e, t) => {
1209
1328
  let n = e.elements.at(t);
1210
1329
  return n ? [n] : [];
1211
- }, it = (e) => ({ fragment: typeof e == "number" ? `:nth(${e})` : ":nth(?)" }), X = (e) => {
1330
+ }, Ft = (e) => ({ fragment: typeof e == "number" ? `:nth(${e})` : ":nth(?)" }), It = (e) => {
1212
1331
  let t = Error(e);
1213
1332
  return t.name = "LocatorError", t;
1214
1333
  }, Z = (e) => {
1215
- if (e.length === 0) throw X("No elements found");
1216
- if (e.length > 1) throw X(`Strict mode violation: locator resolved to ${e.length} elements`);
1334
+ if (e.length === 0) throw It("No elements found");
1335
+ if (e.length > 1) throw It(`Strict mode violation: locator resolved to ${e.length} elements`);
1217
1336
  return e[0];
1218
- }, at = /* @__PURE__ */ e({
1219
- permission: () => st,
1220
- resolve: () => ct,
1221
- type: () => ot
1222
- }), ot = "click", st = {
1337
+ }, Lt = /* @__PURE__ */ e({
1338
+ permission: () => zt,
1339
+ resolve: () => Bt,
1340
+ type: () => Rt
1341
+ }), Rt = "click", zt = {
1223
1342
  scope: "act.click",
1224
1343
  category: "act",
1225
1344
  severity: 3,
1226
1345
  title: "Click on the page",
1227
1346
  description: "Lets the app press buttons or links for you."
1228
- }, ct = (e, t = {}) => {
1347
+ }, Bt = (e, t = {}) => {
1229
1348
  let n = Z(e.elements), r = n.getBoundingClientRect(), i = t.position?.x ?? .5, a = t.position?.y ?? .5, o = {
1230
1349
  bubbles: !0,
1231
1350
  cancelable: !0,
@@ -1250,21 +1369,21 @@ var Be = /* @__PURE__ */ e({
1250
1369
  ...s,
1251
1370
  buttons: 0
1252
1371
  })), n.dispatchEvent(new MouseEvent("mouseup", l)), n.dispatchEvent(new MouseEvent("click", l));
1253
- }, lt = /* @__PURE__ */ e({
1254
- permission: () => dt,
1255
- resolve: () => mt,
1256
- type: () => ut
1257
- }), ut = "fill", dt = {
1372
+ }, Vt = /* @__PURE__ */ e({
1373
+ permission: () => Ut,
1374
+ resolve: () => Kt,
1375
+ type: () => Ht
1376
+ }), Ht = "fill", Ut = {
1258
1377
  scope: "act.type",
1259
1378
  category: "act",
1260
1379
  severity: 1,
1261
1380
  title: "Type into a text field",
1262
1381
  description: "Lets the app fill in form fields on your behalf."
1263
- }, ft = (e, t) => {
1382
+ }, Wt = (e, t) => {
1264
1383
  e._valueTracker?.setValue("");
1265
1384
  let n = e instanceof HTMLTextAreaElement ? HTMLTextAreaElement.prototype : HTMLInputElement.prototype, r = Object.getOwnPropertyDescriptor(n, "value")?.set;
1266
1385
  r ? r.call(e, t) : e.value = t;
1267
- }, pt = (e, t) => {
1386
+ }, Gt = (e, t) => {
1268
1387
  if (e.type !== "range") return null;
1269
1388
  let n = Number(e.min || 0), r = Number(e.max || 100);
1270
1389
  if (!Number.isFinite(n) || !Number.isFinite(r) || r <= n) return null;
@@ -1302,15 +1421,15 @@ var Be = /* @__PURE__ */ e({
1302
1421
  buttons: 0
1303
1422
  }
1304
1423
  };
1305
- }, mt = (e, t, n = {}) => {
1424
+ }, Kt = (e, t, n = {}) => {
1306
1425
  let r = Z(e.elements);
1307
1426
  if (r instanceof HTMLInputElement || r instanceof HTMLTextAreaElement) {
1308
- let e = r instanceof HTMLInputElement ? pt(r, t) : null;
1427
+ let e = r instanceof HTMLInputElement ? Gt(r, t) : null;
1309
1428
  if (e) {
1310
- r.dispatchEvent(new PointerEvent("pointerdown", e.pointerDown)), r.dispatchEvent(new MouseEvent("mousedown", e.mouseDown)), ft(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new PointerEvent("pointerup", e.pointerUp)), r.dispatchEvent(new MouseEvent("mouseup", e.mouseUp)), r.dispatchEvent(new Event("change", { bubbles: !0 }));
1429
+ r.dispatchEvent(new PointerEvent("pointerdown", e.pointerDown)), r.dispatchEvent(new MouseEvent("mousedown", e.mouseDown)), Wt(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new PointerEvent("pointerup", e.pointerUp)), r.dispatchEvent(new MouseEvent("mouseup", e.mouseUp)), r.dispatchEvent(new Event("change", { bubbles: !0 }));
1311
1430
  return;
1312
1431
  }
1313
- ft(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new Event("change", { bubbles: !0 }));
1432
+ Wt(r, t), r.dispatchEvent(new Event("input", { bubbles: !0 })), r.dispatchEvent(new Event("change", { bubbles: !0 }));
1314
1433
  return;
1315
1434
  }
1316
1435
  if (r instanceof HTMLElement && r.isContentEditable) {
@@ -1318,17 +1437,17 @@ var Be = /* @__PURE__ */ e({
1318
1437
  return;
1319
1438
  }
1320
1439
  throw Error(`fill: element <${r.tagName.toLowerCase()}> is not fillable`);
1321
- }, ht = /* @__PURE__ */ e({
1322
- permission: () => _t,
1323
- resolve: () => vt,
1324
- type: () => gt
1325
- }), gt = "hover", _t = {
1440
+ }, qt = /* @__PURE__ */ e({
1441
+ permission: () => Yt,
1442
+ resolve: () => Xt,
1443
+ type: () => Jt
1444
+ }), Jt = "hover", Yt = {
1326
1445
  scope: "act.hover",
1327
1446
  category: "act",
1328
1447
  severity: 1,
1329
1448
  title: "Hover over the page",
1330
1449
  description: "Lets the app point at things to reveal menus or tooltips."
1331
- }, vt = (e, t = {}) => {
1450
+ }, Xt = (e, t = {}) => {
1332
1451
  let n = Z(e.elements), r = n.getBoundingClientRect(), i = {
1333
1452
  bubbles: !0,
1334
1453
  cancelable: !0,
@@ -1348,106 +1467,185 @@ var Be = /* @__PURE__ */ e({
1348
1467
  ...i,
1349
1468
  bubbles: !1
1350
1469
  })), n.dispatchEvent(new MouseEvent("mouseover", i)), n.dispatchEvent(new PointerEvent("pointermove", a)), n.dispatchEvent(new MouseEvent("mousemove", i));
1351
- }, yt = /* @__PURE__ */ e({
1352
- permission: () => xt,
1353
- resolve: () => St,
1354
- type: () => bt
1355
- }), bt = "textContent", xt = {
1470
+ }, Zt = /* @__PURE__ */ e({
1471
+ permission: () => $t,
1472
+ resolve: () => en,
1473
+ type: () => Qt
1474
+ }), Qt = "textContent", $t = {
1356
1475
  scope: "read.text",
1357
1476
  category: "read",
1358
1477
  severity: 1,
1359
1478
  title: "Read text from the page",
1360
1479
  description: "Lets the app see the text shown on this page."
1361
- }, St = (e, t = {}) => Z(e.elements).textContent, Ct = /* @__PURE__ */ e({
1362
- permission: () => Tt,
1363
- resolve: () => Et,
1364
- type: () => wt
1365
- }), wt = "isVisible", Tt = {
1480
+ }, en = (e, t = {}) => Z(e.elements).textContent, tn = /* @__PURE__ */ e({
1481
+ permission: () => rn,
1482
+ resolve: () => an,
1483
+ type: () => nn
1484
+ }), nn = "isVisible", rn = {
1366
1485
  scope: "read.visible",
1367
1486
  category: "read",
1368
1487
  severity: 0,
1369
1488
  title: "See what’s visible on the page",
1370
1489
  description: "Lets the app check which elements are currently on screen."
1371
- }, Et = (e, t = {}) => {
1490
+ }, an = (e, t = {}) => {
1372
1491
  let n = Z(e.elements);
1373
1492
  if (!(n instanceof HTMLElement)) return !0;
1374
1493
  let r = n.ownerDocument.defaultView?.getComputedStyle(n);
1375
1494
  if (r?.display === "none" || r?.visibility === "hidden") return !1;
1376
1495
  let i = n.getBoundingClientRect();
1377
1496
  return i.width > 0 && i.height > 0;
1378
- }, Dt = /* @__PURE__ */ e({
1379
- permission: () => kt,
1380
- resolve: () => At,
1381
- type: () => Ot
1382
- }), Ot = "count", kt = {
1497
+ }, on = /* @__PURE__ */ e({
1498
+ permission: () => cn,
1499
+ resolve: () => ln,
1500
+ type: () => sn
1501
+ }), sn = "count", cn = {
1383
1502
  scope: "read.count",
1384
1503
  category: "read",
1385
1504
  severity: 0,
1386
1505
  title: "Count items on the page",
1387
1506
  description: "Lets the app count how many matching elements are present."
1388
- }, At = (e, t = {}) => e.elements.length, jt = /* @__PURE__ */ e({
1389
- permission: () => Nt,
1390
- resolve: () => Pt,
1391
- type: () => Mt
1392
- }), Mt = "exists", Nt = {
1507
+ }, ln = (e, t = {}) => e.elements.length, un = /* @__PURE__ */ e({
1508
+ permission: () => fn,
1509
+ resolve: () => pn,
1510
+ type: () => dn
1511
+ }), dn = "exists", fn = {
1393
1512
  scope: "read.check",
1394
1513
  category: "read",
1395
1514
  severity: 0,
1396
1515
  title: "Check if something is on the page",
1397
1516
  description: "Lets the app test whether a specific element exists."
1398
- }, Pt = (e, t = {}) => e.elements.length > 0, Ft = /* @__PURE__ */ e({
1399
- permission: () => Lt,
1400
- resolve: () => Rt,
1401
- type: () => It
1402
- }), It = "getAttribute", Lt = {
1517
+ }, pn = (e, t = {}) => e.elements.length > 0, mn = /* @__PURE__ */ e({
1518
+ permission: () => gn,
1519
+ resolve: () => _n,
1520
+ type: () => hn
1521
+ }), hn = "getAttribute", gn = {
1403
1522
  scope: "read.info",
1404
1523
  category: "read",
1405
1524
  severity: 1,
1406
1525
  title: "Read info from the page",
1407
1526
  description: "Lets the app read the href value from a part of the page."
1408
- }, Rt = (e, t, n = {}) => Z(e.elements).getAttribute(t), zt = /* @__PURE__ */ e({
1409
- permission: () => Vt,
1410
- resolve: () => Ht,
1411
- type: () => Bt
1412
- }), Bt = "videoElement", Vt = {
1527
+ }, _n = (e, t, n = {}) => Z(e.elements).getAttribute(t), vn = /* @__PURE__ */ e({
1528
+ permission: () => bn,
1529
+ resolve: () => xn,
1530
+ type: () => yn
1531
+ }), yn = "videoElement", bn = {
1413
1532
  scope: "media.video",
1414
1533
  category: "media",
1415
1534
  severity: 0,
1416
1535
  title: "Control video playback",
1417
1536
  description: "Lets the app play, pause, seek, and read the video on the page."
1418
- }, Ht = (e, t = {}) => {
1537
+ }, xn = (e, t = {}) => {
1419
1538
  let n = Z(e.elements);
1420
1539
  if (!(n instanceof HTMLVideoElement)) throw Error(`videoElement: expected <video>, got <${n.tagName.toLowerCase()}>`);
1421
1540
  return C(n);
1422
- }, Q = "locator", Ut = [
1423
- ce,
1541
+ }, Q = "locator", Sn = [
1542
+ L,
1424
1543
  {
1425
- ...j,
1544
+ ...V,
1426
1545
  nextLocatorType: "frameLocator"
1427
1546
  },
1428
- Be,
1429
- We,
1430
- Je,
1431
- Qe,
1432
- nt
1433
- ], $ = [
1434
- at,
1435
- lt,
1436
- ht,
1437
- yt,
1438
- Ct,
1439
- Dt,
1440
- jt,
1441
- Ft,
1442
- zt
1443
- ], Wt = {
1547
+ _t,
1548
+ xt,
1549
+ Tt,
1550
+ kt,
1551
+ Nt
1552
+ ], Cn = [
1553
+ Lt,
1554
+ Vt,
1555
+ qt,
1556
+ Zt,
1557
+ tn,
1558
+ on,
1559
+ un,
1560
+ mn,
1561
+ vn
1562
+ ], wn = {
1444
1563
  type: Q,
1445
- selectorModules: Ut,
1446
- operationModules: $
1447
- }, Gt = Y({
1564
+ selectorModules: Sn,
1565
+ operationModules: Cn
1566
+ }, Tn = gt({
1448
1567
  ownType: Q,
1449
- selectorModules: Ut,
1450
- operationModules: $
1568
+ selectorModules: Sn,
1569
+ operationModules: Cn
1451
1570
  });
1571
+ (() => {
1572
+ let e = {}, t = [...wn.selectorModules, ...mt.selectorModules];
1573
+ for (let n of t) n.render && !(n.type in e) && (e[n.type] = n.render);
1574
+ return e;
1575
+ })();
1576
+ //#endregion
1577
+ //#region node_modules/@mfkn/web-extension/lib/lib/frame-url.js
1578
+ var En = (e) => {
1579
+ if (!e || e === "about:blank") return !1;
1580
+ let t;
1581
+ try {
1582
+ t = new URL(e, location.href);
1583
+ } catch {
1584
+ return !1;
1585
+ }
1586
+ if (t.protocol === "chrome-extension:" || t.protocol === "moz-extension:") return !0;
1587
+ if (t.protocol === "about:") return !1;
1588
+ let n = t.hostname, r = (e) => n === e || n.endsWith(`.${e}`);
1589
+ return r("fkn.app") || r("fkn.dev") || r("sdbx.app");
1590
+ }, $ = (e) => {
1591
+ if (En(e)) throw Error("attachFrame: refusing to target the extension's own pages or an FKN platform origin");
1592
+ }, Dn = ({ src: e, domains: t, lockdown: n }) => {
1593
+ if (!(!n || t.length) && e && e !== "about:blank") throw Error("attachFrame: lockdown needs domains when the frame already has a src; pass domains or load it via goto");
1594
+ }, On = {
1595
+ scope: "embed.iframe",
1596
+ category: "embed",
1597
+ severity: 0,
1598
+ title: "Load another website inside this app",
1599
+ description: "Lets the app embed external pages directly inside its own view."
1600
+ }, kn = {
1601
+ scope: "embed.open",
1602
+ category: "embed",
1603
+ severity: 0,
1604
+ title: "Open a website inside this app",
1605
+ description: "Lets the app navigate to another site without leaving its window."
1606
+ }, An = (e) => {
1607
+ let t = ht(e.executeLocator, e.ensurePermission), n = (t, n = {}) => ($(t), e.goto(t, n)), r = () => e.url();
1608
+ return {
1609
+ ...t,
1610
+ goto: n,
1611
+ url: r
1612
+ };
1613
+ }, jn = "FKN_WEB_EXTENSION_ATTACH_FRAME_EVENT_KEY", Mn = async ({ iframe: e, domains: t = [], syncCookies: n = !0, lockdown: r = !1 }) => {
1614
+ let i = crypto.randomUUID();
1615
+ if ($(e.src), Dn({
1616
+ src: e.src,
1617
+ domains: t,
1618
+ lockdown: r
1619
+ }), await j(), !e.isConnected) throw Error("attachFrame: the iframe must be connected to the document before attaching");
1620
+ e.dispatchEvent(new CustomEvent(jn, { detail: i }));
1621
+ let { executeLocator: a, ensureLocatorPermission: o, goto: s } = await M.attachFrame({
1622
+ marker: i,
1623
+ domains: t,
1624
+ syncCookies: n,
1625
+ lockdown: r
1626
+ });
1627
+ return An({
1628
+ executeLocator: a,
1629
+ ensurePermission: o,
1630
+ goto: (e, t = {}) => s({
1631
+ url: e,
1632
+ ...t
1633
+ }),
1634
+ url: () => e.src
1635
+ });
1636
+ }, Nn = { request: (e) => M.requestPermissions(e.map((e) => ({
1637
+ key: e.key,
1638
+ scope: e.scope ?? "",
1639
+ reason: e.reason
1640
+ }))) }, Pn = ["fkn.app", "fkn.dev"], Fn = (e) => {
1641
+ let t = typeof e == "string" ? e : e instanceof URL ? e.href : e.url, n;
1642
+ try {
1643
+ n = new URL(t);
1644
+ } catch {
1645
+ return;
1646
+ }
1647
+ let r = n.hostname;
1648
+ if (Pn.some((e) => r === e || r.endsWith(`.${e}`))) throw Error(`fetch refuses FKN platform domains (${r})`);
1649
+ }, In = (e, n) => (Fn(e), t.then((t) => t.cloud.fetch(e, n)));
1452
1650
  //#endregion
1453
- export { G as a, D as c, C as d, w as f, ze as i, ee as l, c as m, Q as n, W as o, E as p, J as r, he as s, Wt as t, T as u };
1651
+ export { ce as A, w as B, be as C, ge as D, P as E, ae as F, d as H, j as I, D as L, fe as M, O as N, le as O, k as P, T as R, xe as S, _e as T, E as V, Le as _, Mn as a, F as b, kn as c, En as d, wn as f, dt as g, Y as h, jn as i, N as j, ue as k, $ as l, mt as m, Fn as n, On as o, Q as p, Nn as r, An as s, In as t, Dn as u, I as v, ve as w, ye as x, we as y, C as z };